我是汇编语言新手,这是一些我不理解的代码,希望有人能帮忙。
DATA SEGMENT
VALUES DB 1,2,3,4,5,6,7,8,9
ITEM DB 6
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DX,AX
LEA SI,VALUES
MOV AL,ITEM
COMPARE: CMP AL,[SI]
JZ Found
INC SI
LOOP COMPARE
CLC
JMP EXIT
Found: STC
EXIT: MOV AH,4CH
INT 21H
ENDS
CODE END
这个程序应该寻找号码 (6)
其中1,2,3,4,5,6,7,8,9
我了解它的一般工作原理,但我有几个问题:
- 我们为什么使用
CLC
和STC
??我知道他们把CF
分为零和一,但我们为什么要使用它? - 我们为什么使用
MOV AH,4CH
在EXIT
之后标签?? 在开始标签之后,为什么我们要说以下内容:
MOV AX,数据
MOV DX,AX
为什么我们不直接说:
MOV DX,DATA
最后,有人可以推荐一本学习汇编的好书吗?
最佳答案
MOV AX,DATA
MOV DX,AX
这是错误的。
正确答案是:
MOV AX,DATA
MOV DS,AX
我们不能直接将数据从内存发送到段寄存器(DS)。所以我们通过通用寄存器(AX)发送。
关于汇编8086程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5367498/