当前位置:编程学习 > 汇编语言 >>

CLD MOV SI,2400H MOV DI,1200H REPE CMPSB AND CX,0FFH JZ AGIN DEC SI MOV BX,SI MOV AL,[SI]

JMP STOP AGAIN: MOV BX,0 STOP:HLT 请教一个汇编语言的问题,好心人和各位高手帮忙解答下,万分感激 1、这个CX,100为什么用的是10进制的数值啊,CX后不应该跟16进制的数吗? 2、还有AND CX,0FFH清除高位在这里有什么作用哦?3、最后还要DEC SI,这个REPE指令就是找到第一个不相同的数据,DI应该已经是那个不相同数据的存储位置了啊?
答案:(1)用10进制的数据没有关系,因为其后没有加像H表示16进制的标志,汇编时机器会将其转换成2进制数据。
(2)AND CX,0FFH,这里不是用来清除高位,而是判断CX是否为0,因为如果CX是0,那么,CX跟0FFAND时,状态标志位ZF会被置1,这样JZ AGIN,转到AGIN处执行,如果CX不是0,则跳到 DEC SI句继续向下执行
(3)至于为什么要DEC SI,是这样的:使用重复指令REPE寻找两字符串中第一个不同的字符时,当遇到第一个不相等的字符就停止比较,但此时地址已被修改,即(DS:SI)和(ES:DI)已经指向下一个字节或字地址,应将SI或DI进行修正,即DEC SI或DEC DI

上一个:请问ss,bp,sp具体怎么配合使用啊
下一个:请问汇编高手这是什么意思?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,