汇编语言知识点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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(字运算

相关文档
最新文档