汇编语言知识点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章
十进制与二进制之间的转换(P2)
降幂法
除法
十进制与六进制之间的转换(P5)
降幂法
除法
补码表示:正数:采用符号—绝对值法
负数:先写出对应的正数的补码表示,然后再将其按位数求反,最后末尾加1,就可以得到负数的补码表示
补吗运算:二进制数按位求反后在末尾加1
第二章
一、存储容量
1K = 1024 =210 (Kilo)1M =1024K = 220 (Mega)
1G = 1024M = 230 (Giga)
1个二进制位:bit (比特)8个二进制位:Byte(字节)1Byte = 8bit
2个字节:1 Word (字)1Word = 2Byte = 16bit
二、存储单元地址和内容
1.存储器以字节(8 bit)为编程单位
2.每个字节单元都有唯一的地址编码
3.地址用无符号整数来表示(编程用十六进制表示)
4.一个字要占用相继的两个字节
5.低位字节存入低地址,高位字节存入高地址
6.字单元地址用它的低地址来表示
7.机器以偶地址访问(读/ 写)存储器
三、物理地址= 16 段地址+ 偏移地址
四、存储器的分段:
20 根地址线:地址范围00000H ~ FFFFFH (1MB)
机器字长16位:仅能表示地址范围0000H ~ FFFFH (64KB)
小段:每16个字节为一小段,共有64K个小段
段起始地址:小段首地址
段的大小:64K 范围内的任意字节
五、存储器的逻辑分段优点:
允许程序在存储器内重定位;
允许实模式程序在保护模式下运行;
有利于程序和数据的分离。
六、中央处理器8086/8088寄存器组:
通用寄存器
数据寄存器:AX,BX,CX,DX
变址寄存器:SI、DI
指针寄存器:SP、BP
控制寄存器:IP、FLAGS
段寄存器:CS、DS、SS、ES
七、标志寄存器( FLAGS / PSW )
条件标志位:OF 溢出标志SF符号标志ZF 零标志
CF 进位标志AF 辅助进位标志PF奇偶标志
控制标志位:DF 方向标志IF中断标志TF 陷阱标志
八、寄存器与存储器的比较:
寄存器:在CPU内部;访问速度快;容量小,成本高;用名字表示;没用地址
存储器:在CPU外部;访问速度慢;容量大,成本低;用地址表示;地址可用各种方式形成
第三章
九、数据传送指令
传送指令MOV CPU内部寄存器之间的数据传送
指令格式:MOV DST, SRC 执行操作:(DST) ←(SRC)
注意: *DST、SRC 不能同时为段寄存器MOV DS, ES ⨯
* DST、SRC 不能同时为存储单元
*立即数不能直接送段寄存器MOV DS, 2000H ⨯
* DST 不能是立即数和CS
*不影响标志位
交换指令XCHG
指令格式:XCHG OPR1, OPR2 执行操作:(OPR1) ↔(OPR2)
例:XCHG BX, [ BP+SI ] XCHG AL, BH
注意: * 两个操作数字长一致
* 两个操作数都不能是段寄存器
* 两个操作数都不能是立即数
* 两个操作数不能同时是存储单元
* 可以采用除立即寻址方式外的任何一种寻址方式。
* 不影响标志位
地址传送指令LEA、LDS、LES
1.有效地址送寄存器指令:LEA REG, SRC 执行操作:(REG) ← SRC
2.指针送寄存器和DS指令:LDS REG, SRC 执行操作:(REG) ←(SRC)
(DS) ← (SRC+2) 相继二字→寄存器、DS
3.指针送寄存器和ES指令:LES REG, SRC 执行操作:(REG) ←(SRC)
(ES) ←(SRC+2) 相继二字→寄存器、ES
注意:* 源操作数必须为存储器操作数
* 目的操作数必须是一个16位通用寄存器,不能是段寄存器
* 源操作数可以是除立即寻址和寄存器寻址以外的任意一种寻址方式
* 不影响标志位
堆栈操作指令PUSH、POP
1.进栈指令:PUSH SRC
执行操作:(SP) ←(SP) – 2 ( (SP)+1, (SP) ) ←(SRC)
出栈指令:POP DST
执行操作:(DST) ←( (SP)+1, (SP) ) (SP) ←(SP) + 2
堆栈:‘先进后出’的存储区,段地址存放在SS中,SP在任何时候都指向栈顶,进出栈后自动修改SP。
注意:* 堆栈操作必须以字为单位。
* 不影响标志位
* 不能用立即寻址方式PUSH 1234H ⨯
* DST不能是CS POP CS ⨯
标志操作指令
LAHF、SAHF、PUSHF、POPF 、CLC、STC、CMC、CLD、STD、LI、STI
标志传送指令:
1.标志送AH指令:LAHF 执行操作:(AH) ← (FLAGS的低字节)
2.AH送标志寄存器指令:SAHF 执行操作:(FLAGS的低字节) ←(AH)
注意: * LAHF不影响标志位* SAHF影响CF、PF、AF、ZF、SF
标志进栈指令:PUSHF
执行操作:(SP) ←(SP) - 2 ( (SP)+1, (SP) ) ←(FLAGS)
标志出栈指令:POPF
执行操作:(FLAGS) ← ( (SP)+1, (SP) ) (SP) ←(SP) + 2
注意:PUSHF和POPF经常一起联用,完成保护、维护标志寄存器的内容或改变标志位的值。
标志位操作指令:
清进位标志指令CLC CF ←0
置进位标志指令STC CF ← 1
进位标志取反指令CMC CF ←CF
清方向标志指令CLD DF ←0
置方向标志指令STD DF ← 1
清中断允许标志指令CLI IF ←0
置中断允许标志指令STI IF ← 1
注意: * 只影响本指令指定的标志
十、加减法指令:
加法指令:ADD DST, SRC 执行操作:(DST) ←(SRC) + (DST)
带进位加法指令:ADC DST, SRC 执行操作:(DST) ←(SRC) + (DST) + CF
加1指令:INC OPR 执行操作:(OPR) ←(OPR) + 1
注意: * 除INC指令不影响CF标志外,均对状态标志位有影响。
各加法指令对条件标志位的影响:
SF=1,结果为负ZF=1,结果为0 CF=1,和的最高有效位有向高位的进位
OF=1,两个操作数符号相同,而结果符号与之相反
CF 位表示无符号数相加的溢出。
OF 位表示带符号数相加的溢出。
减法指令:SUB DST, SRC 执行操作:(DST) ←(DST) - (SRC)
带借位减法指令:SBB DST, SRC 执行操作:(DST) ←(DST) - (SRC) - CF
减1指令:DEC OPR 执行操作:(OPR) ← (OPR) - 1
求补指令:NEG OPR 执行操作:(OPR) ←- (OPR)
比较指令:CMP OPR1, OPR2 执行操作:(OPR1) - (OPR2)
各减法指令对条件标志位(CF/OF/ZF/SF)的影响:
CF=1,被减数的最高有效位有向高位的借位或CF=1减数转换为加法运算时无进位
OF=1 两个操作数符号相反,而结果的符号与减数相同
CF 位表示无符号数减法的溢出。
OF 位表示带符号数减法的溢出。
NEG 指令对CF/OF的影响
CF=0,操作数为0 OF=1,操作数为-128(字节运算)或-32727(字运算