微机汇编常见基础知识点汇总(针对考试的知识点总结)
一、最基础的架构
1.三个段的架构
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START
2.数据段
1)字符串
确定的字符串:
一般字符串结尾加“$”:
BUF1 DB ‘DHUAODF HDHD$’;
字符串长度:
COUNT EQU $-BUF1 ;
不确定的字符串:
BUF DB 20 DUP(?) ;该数据段占用20字节
BUF DB 10 DUP(‘$’)
dup的使用格式如下:
db重复的次数 dup(重复的字节型数据)
dw重复的次数 dup(重复的字型数据)
dd重复的次数 dup(重复的双字数据)
3.堆栈段(不常用)
4.代码段
1)系统调用
MOV AH,01H
INT 21H
常用AH值:
二、按实现功能分类
1.字符串操作
1)字符串长度
①数据段获取
COUNT EQU $-BUF1 ;字符串长度
②输入的字符串buf
长度存储在buf[1]中
MOV CX,BUF[1]
2)字符串比较、复制、转移
操作流程:
SI寄存器保存源串首地址;
DI寄存器保存目的串首地址;
CX寄存器保存字符串长度;
CLD或STD指令设置字符串处理方向;
当CLD指令使DF=0,在执行串处理指令时可使地址自动增量;STD使DF=1,在执行串处理指令时可使地址自动减量。
重复前缀:
REP无条件重复前缀:至CX为0
REPE/REPZ:至CX为0,或ZF为0(两个操作数不等)
REPNE/REPNZ:至CX为0,或ZF不为0(两个操作数相等)
字符串操作指令:
lodsb/lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据DF标志增减SI;
Stosb/stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据DF标志增减DI;
Movsb/movsw:把DS:SI指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据DF标志分别增减SI和DI;
Scasb/scasw:把AL或AX中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;
Cmpsb/cmpsw:把DS:SI指向的存储单元中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;
2.比较,标志位
转移指令:
JMP无条件跳转
条件转移指令JXX:
表 1条件转移指令标志位的状态
表 2无符号数条件转移指令条件
表 3带符号数条件转移指令条件
表 4循环控制指令
3.算术运算
ADD表示加法指令,ADC表示带进位加法指令, SUB表示减法指令,SBB表示带进位减法指令。
MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV表示带符号数除法指令。
CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。
BCD码的调整指令:
在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD码还是非组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。
组合的BCD码加法调整指令DAA;
组合的BCD码减法调整指令DAS;
非组合的BCD码加法调整指令AAA;
非组合的BCD码减法调整指令AAS;
乘法的非组合BCD码调整指令AAM;
除法的非组合BCD码调整指令AAD。
8088/8086指令系统提供了实现加、减、乘、除运算指令, 可参照表5所示内容。
表 5 数据类型的数据运算表
4.调试
表 6标志名和状态符号的对照表参照表