首页
社区
课程
招聘
[旧帖] [求助]一道汇编题目 0.00雪花
发表于: 2007-11-12 16:11 4676

[旧帖] [求助]一道汇编题目 0.00雪花

2007-11-12 16:11
4676
我知道在这问这种问题很不应该,但我在别的地方问都没人回答,希望大家能给我解答下。
有这样一道题目如下:
将BL中的每一位重复4次,构成32位的双字DX:AX,例如:BL=01011101,则得到的DX=0F0FH,AX=0FF0FH。
大家给个思路就行,我谢谢大家。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不要见笑。

.data
szCap                db 'test',0
szMsgFmt                db 'DX:%04lX  AX:%04lX',0
.data?
szBuf                db 0 dup(128)

.code

start:
        xor edx,edx
        xor eax,eax
        mov bh,80H        ;要测试的位
        mov bl,0dbh        ;11011011
       
        mov ecx,8        ;测试8次
loop1:
        mov edi,ecx        ;保存ecx 到 edi
        test bh,bl        ;测试指定位是否为1
        jz NextCmp        ;为0就下一个
Bit1:       
        mov edx,0Fh       
        lea ecx,[ecx*4]        ;
        sub ecx,4        ;
        shl edx,cl        ;左移 cl 位
        or eax,edx        ;然后与原值 or
NextCmp:
        shr bh,1        ;要测的下一位
        mov ecx,edi       
        loop loop1
               
        mov edx,eax        ;
        shr edx,16        ;eax 的高16位
        and eax,0FFFFh        ;清0 eax的高16位
        invoke wsprintf,addr szBuf,addr szMsgFmt,edx,eax
        invoke MessageBox,0,addr szBuf,addr szCap, MB_OK

        invoke ExitProcess,eax

end start
2007-11-12 18:33
0
游客
登录 | 注册 方可回帖
返回