汇编语言精简版
版权归属GuYue.Wang
一、入门基础
1.汇编基本格式
2.内存管理:小端存储。
3.寄存器
16位CPU通用寄存器共8个:AX,BX,CX,DX,BP,SP,SI,DI,它们都可以作为普通的数据寄存器来使用,也有一些特殊的功能,如下:
①数据寄存器
AX:BX:存放偏移地址
CX:循环次数(loop)DX:
②指针寄存器
SI:存放偏移地址,指向源操作数或作为变址寄存器,参与基址、变址寻址
DI:存放偏移地址,指向目的操作数或作为变址寄存器,参与基址、变址寻址
SP:堆栈指针,存放偏移地址,与SS结合使用
BP:基址寄存器,存放偏移地址,与DS结合使用
IP: 指令指针
③段寄存器
CS:代码段DS:数据段
SS:堆栈段ES:
4.标志位
① ZF(零标志位):结果为0,则ZF=1.
② PF(奇偶标志位):结果所有bit位1的个数为偶数,PF=1
③ SF(符号标志位):有符号数运算,结果为负,SF=1
④ OF(溢出标志位):有符号数运算,发生溢出,OF=1
⑤ CF(进位标志位):无符号数运算,记录了最高有效位向更高位的进位或借位
5.定义数据
二、指令集
1.数据传送指令
1>MOV <目的操作数> , <源操作数>
① 两个操作数位数一致
② 不能在两个存储单元之中进行数据直接传送
③ 不能在两个段寄存器之间进行数据直接传送
④ imm不能直接送入段寄存器
⑤目的操作数不能是CS,IP
2> XCHG<目的操作数> , <源操作数>:交换两个操作数的内容
xchgreg,reg
xchgreg,mem
xchgmem,reg
3>LEA
, :将OP1的地址偏移量传送给 OP2
①源操作数必须是内存操作数
②目的操作数必须是16位的通用寄存器
4>PUSH , POP:堆栈
①SS:栈段寄存器 SP:栈顶指针(使用时应当先初始化)
② 一次压入或弹出一个字,栈顶最大变化范围0~FFFFH
③执行PUSH、POP时,SP指针默认移动
④栈空:SP指向栈空间最高地址单元的下一个单元
⑤OP:段寄存器(除CS),16位通用寄存器,内存的16位字
2.算数运算指令
1>ADD , | SUB <目的> , <源>
①目的=目的 +/-源
②两操作数不能同时为mem
(注:ADD、SUB影响标志位:CF、ZF、SF、OF、AF、PF)
2>INC:自增1 |DEC:自减1
(注:INC、DEC适用于无符号运算,不影响进位标志CF)
3>NEG:求负(求补),按位取反加1
①影响标志位:CF、ZF、SF、OF、AF、PF
4>CMP<> , <>:目的操作数—源操作数,不回送结果,只影响标志位
①根据相减结果修改 OF、SF、ZF、CF、AF、PF
②无符号数的比较:
③有符号数的比较:
5>MUL<乘数>(无符号乘法)|IMUL<乘数>(有符号乘法)
①乘数不能位imm
②IMUL指令的执行结果的高半部分不是低半部分的符号扩展,则设置CF、OF
6>DIV<除数>(无符号除法) |IDIV<除数>(有符号除法)
①除数不能位imm
②IDIV:余数符号与被除数相同
3.逻辑运算与移位指令
1>AND<目的>,<源>:按位相与,将结果保存在目的操作数中
①总是清除 OF 和 CF,根据结果修改 SF、ZF、PF
②对特定位清‘0’同时保留其他位
③应用:字符大小写转化
2>OR<目的>,<源>:按位相或,将结果保存在目的操作数中
①使CF=0、OF=0,根据结果修改 SF、ZF、PF
②对特定位置‘1’
③将数字转化位对应的ASCII码
3> NOT:按位取反,不影响任何标志位
4>XOR<目的>,<源>:按位异或,将结果保存在目的操作数中
①对某些为取反,且不影响其它位,与‘0’异或保持不变;与‘1’异或取反
②对寄存器清0,或判断两个值是否相等
③交换两个数,不使用中间变量
④CF=0,OF=0,PF、SF、ZF变
5>TEST ,:按位相与,不回送结果
①清除 OF、CF;修改 SF、ZF、PF
②测试某些位是‘0’或‘1’
6> SHL、SHR
①格式:
SHL mem/reg,1
SHL mem/reg,CL(移动次数>1放入CL)
②
③相当于乘除法
4.程序控制指令
1> JMP :无条件转移指令
2>LOOP:循环指令,循环次数存于cx中,执行loop时首先CX=CX-1,然后判断CX=0?,是则跳转
3>条件跳转指令
①基于特定的标志值
②根据操作数之间是否相等,或根据(E)CX的值
与CMP , 指令结合使用
③基于无符号整数比较结果的跳转指令
④基于有符号整数比较结果的跳转指令
5.输入输出指令(接口与CPU之间的操作)
1> IN AL|AX , <接口地址>:从接口到CPU的输入操作
2>OUT<接口地址> , AL|AX:从CPU到接口的输出操作
①CPU只能用AL或AX接收或发送数据
②直接寻址(接口地址用一个字节
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示00~FFH)
IN AL, 35H
OUT44H , AX
③寄存器间接寻址(接口地址由DX内容决定0000~FFFFH)
MOVDX,03F8H
INAL ,DX
三、补充
1.CLC: 使CF=0
2.ADC , : op1=op1+op2+CF