鱼C论坛

 找回密码
 立即注册
查看: 1129|回复: 0

[汇编作业] 9.3自测

[复制链接]
发表于 2022-12-9 09:48:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume cs:codesg

codesg segment
    start:
        mov ax,2000h
        mov ds,ax
        mov bx,0

    s:
        mov cl,[bx]      ;cx的低位cl设为bx,
        mov ch,0        ;把cx的高位ch设置为0;因为是在2000H中查找字节  字节为8位;
        inc cx        ;要想使得(cx)=0,进行指令跳转;就要在执行loop s时,(cx)=0;在loop 判断时候,是要进行(cx)=(cx)-1操作,减去1之后再判
                         断,所以此时的cx应该加1,才可使得(cx)=(cx)-1=0,结束loop去执行ok;(因为loop的语法就是(cx)=0时,什么都不做,程序向下执行,就是去执行 指令 ok)
        inc bx
        loop s
   
    ok:
        dec bx
        mov dx,bx
   
    mov ax,4c00h
    int 21h
codesg ends

end start







应该输出 :inc cx
(1)因为cx为处的ch为0;cx的cl为bx,
如果bx为0,则cx=0,找到目标值。应该结束。
(2)但是此时程序会继续向下,执行下一行指令,直到loop s;在loop s 执行时候,才会判断 cx是否为0,如果是0,则程序向下执行,去执行ok;
要想使得(cx)=0,进行指令跳转;就要在执行loop s时,(cx)=0;在loop 判断时候,是要减去1之后再判断,所以此时的cx应该加1,才可使得(cx)=(cx)-1=0,结束loop去执行ok





想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 22:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表