汇编语言的艺术之三:基本认识
四、对指令的认识
指令就是「指挥」、「命令」,用以控制电脑,一步一步地实现程式的计划。
组合语言的格式为:
( 下行中凡标“[ ] ”者,表有些指令可省略 )
[前置元] 指令 [目的操作元,源始操作元]
1,「前置元」:以下诸例即为前置元的用法。
11段名:表后面的操作元应属于此临时前置段。如:
MOV AX,CS:BUF1
12定义:表示其后缓冲器的临时定义。BYTE PTR表示以一个字元定义的资料; WORD PTR表双字元资料。
不论缓冲器的原定义为何,凡有前置元者,皆以临 时定义为准,如:
ADD BYTE PTR BUF1,CL
前置元除了定义缓冲器长度外,亦可表示距离,
JMP SHORT ABCD
2,指令:
11使用方法:
1-1 暂存器到暂存器,但限长度相同者。
MOV AH,BL ; 为字元
XCHG AX,BX ; 为二字元
1-2 暂存器到缓冲器,或缓冲器到暂存器。
OR BUF1,AX ; BUF1为缓冲器,WORD
ADD CL,BYTE PTR BUF1
1-3 数值与暂存器或缓冲器之间。
TEST DI,8000H
AND SI,0FFH
SUB BYTE PTR BUF1,3
★数值绝不可作为「目的」操作元
1-4 将记忆区的地址放在暂存器中,以传送该地址的内容,或传送变数以便间接调用资料。本法限用于源存器(SI)、终存器(DI)、栈用器(BP)及兼用器(BX)。如:
MOV AL,BYTE PTR [DI]
XOR [BP],DL
MOV AX,[DI][SI]
MOV AX,BUF1[DI]
JMP LAB1[BX]
1-5 执行指令本身,不需源始或目的操作元。
PUSH CS
POP DS
CALL ABCD
JMP ABCD
CLI
STD
LAHF
RET
1-6 执行计数者。
LOOP ABCD
REP MOVSB
SAL DL,CL
ROR AX,1
DEC BX
1-7 暂存器专用指令。
OUT DX,AL
MUL BUF1
DIV CX
STOSB
LODSW
1-8 条件执行者。
JNZ ABCD
JA ABCD
JCXZ ABCD
INT 10H
IRET
12应用功能可分为下列八项:
2-1 资料转移:1-1,1-2,1-3,1-4皆有可能。
2-2 旗号控制:1-5 涉及旗号者。
2-3 段址处理:1-1,1-2 项可能。
2-4 数学计算:视指令而定,上述各项皆可。
2-5 字串处理:1-6,1-7 项功能。
2-6 控制转换:1-5。
2-7 条件执行:1-8。
2-8 中断处理:1-8。
3,操作元:可分成暂存器、缓冲器及数值(Immediate Data)。其书写方式与习惯的由前到后正好相反,使用时要小心,其余细节请参看有关组合语言手册。