汇编网首页登录博客注册
masmaster的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
文章收藏

[2010-09-02 12:25] 习题3.25

写一个程序片段完成如下功能:把寄存器AL和BL中的位依次交叉,得到的结果存放到DX寄存器中。

答:

d:\MASM>type 25.asm
assume  cs:code
code    segment
start:
        mov al,0fh
        mov bl,0f0h
        mov dx,0
        call cross
        mov ah,4ch
        int 21h
;子程序cross
;入口参数AL,BL
;出口参数DX

cross   proc
        xor ah,ah
        mov cx,8
L:      rol al,1
        adc dx,0
        shl dx,1
        rol bl,1
        adc dx,0
        dec cx
        jcxz ok
        shl dx,1
        jmp L
ok:     ret
cross   endp
;
code    ends
end     start

d:\MASM>
AL=0FH ,二进制00001111b
BL=0F0H,二进制11110000b
形成16位传送DX,结果应为:0101010110101010b;即55AAh
验证结果:

d:\MASM>debug 25.exe
-ga

AX=000F  BX=00F0  CX=0000  DX=55AA  SP=0000  BP=0000  SI=0000  DI=0000
DS=13AA  ES=13AA  SS=13BA  CS=13BA  IP=000A   NV UP EI PL ZR NA PE NC
13BA:000A B44C          MOV     AH,4C
-q
评论次数(0)  |  浏览次数(304)  |  类型(汇编习题集) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码