【发布时间】:2011-03-20 08:37:41
【问题描述】:
我是汇编语言的新手,这是一些我不明白的代码,希望有人能帮忙。
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
这个程序应该在1,2,3,4,5,6,7,8,9中寻找号码(6)
我了解它的一般工作原理,但我有几个问题:
- 为什么我们使用
CLC和STC??我知道他们将CF设为零和一,但我们为什么要使用它?? - 为什么我们在
EXIT标签之后使用MOV AH,4CH?? -
在开始标签之后为什么我们说以下内容:
MOV AX,数据
MOV DX,AX
我们为什么不直接说:
MOV DX,DATA
最后,有人能推荐一本学习汇编的好书吗?
【问题讨论】:
-
天哪! 3个编辑器一次! =P 我保留了书籍推荐位。
-
搜索书籍推荐请参阅:SO Ninja Search
-
LOOP 是 286+,无论如何你都不会在任何地方初始化 cx。
-
@bestsss:
loop绝对不是 286+。loop的所有形式都是8086级指令。然而,cx缺乏初始化是真的。