汇编语言第二版(王爽)知识总结
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相当于 pop IP/pop CS 47. mul 指令 格式:mul reg 或者 mul 内存单元; 结果:8 位乘法,结果放在 AX 中,16 位乘法,则高位放在 DX 中,低位放在 AX 中;
第 11 章 标志寄存器
48. 8086CPU 的 flag 寄存器的结构:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
11. 8086CPU 采用段地址和偏移地址,通过地址加法器来合成物理地址 物理地址=段地址 x 16 + 偏移地址 (段的大小=偏移地址的长度)
12. 偏移地址 16 位,其变化范围为 0—FFFF H;仅用偏移地址来寻址最多可寻 64KB 个内存 单元;
13. CPU 将 CS:IP 指向的内容作为指令执行,读取一条指令后,IP 值将自动增加,以便使 CPU 读下一条指令,机器码占几个字节,IP 值加几;
mov word ptr ds:【0】,1 表示访问为 1 个字节单元
mov byte ptr ds:【0】,1 表示访问为 2 个字节单元 一般来说,我们可用【bx+idata+si】的方式来访问结构体的数据,用 bx 来定义整个结构
体,用 idata 定位结构体中某一个数据项,用 si 来定义数组中的每个元素;
(1)SP=SP-2,SS:SP 指向当前栈顶前面的单元,以当前栈顶前面的单元作为新的栈顶;
(2)将 AX 中的内容送入 SS:SP 指向的内存单元处,SS:SP 此时指向新栈顶;
20. 8086CPU 入栈时,栈顶从高地址向低地址方向移动,栈为空的时候,SS:SP 指向最底部
的字单元的偏移地址+2;
38. div 指令(除法指令)
8 位除数
16 位除数
16 位被除数
32 位被除数 { AX (低 16 位) DX (高 16 位)}
AL(商)AH(余数)
AX (商)DX(余数)
39. 伪指令 dup
db/dw/dd 重复次数 dup (重复的字节/字型/双字型)
dw 0, 0, 0, 0, 0, 0 ,0, 0
23. 一个栈段最大为 64KB,SP 的变化范围为 0—FFFF H,当 10000H—1FFFF H 时,SS=1000H,
SP=0000H,(此时 SP=SP+2z 只能返回 0000H 处)
第 4 章 第一个程序
24. 一个汇编程序由多个段组成,这些段分别用来存放代码,数据,后者当做栈空间,一个
低地址处是转移的目的偏移地址
43. jcxz 指令 jcxz 标号 功能:相当于 if((cx)==0)jmp short 标号 ; 44. loop 指令 loop 标号 功能:相当于 (cx)-- ;if((cx)!=0)jmp short 标号 ;
第 10 章 CAll 和 RET 指令
45. call 指令(和 jmp 指令进行比较) 依据位移转移的 call 指令(CPU 在执行 call 指令的时候不要需要转移的目的地址) call 标号 相当于 push IP / jmp near ptr 标号; 转移的目的地址在指令中的 call 指令 call far ptr 标号 相当于 push CS / push IP / jmp far ptr 标号; 转移目的地址在寄存器中的 call 指令 call 16 位 reg 相当于 push IP / jmp 16 位 reg; 转移地址在内存中的 call 指令 call word ptr 内存单元地址 相当于 push IP / jmp word ptr 内存单元地址; call dword ptr 内存单元地址 相当于 push CS / push IP /jmp dword ptr 标号; 46. ret 和 retf 指令 ret 指令用栈中的数据,修改 IP 的内容,从而实现近转移,相当于 pop IP; retf 指令用栈中的数据,修改 CS 和 IP 中的内容,从而实现远转移;
第一章 基础知识
1. 存储单元为 1Byte,即字节。
2. 微小信息单位为 1bit,其中 1Byte=8bit。
3. Cpu 的寻址能力 对于地址总线来说,N 根地址总线,寻址能力为 2N B。 对于数据总线来说,N 根地址总线,寻址能力为 N/8 B。
4. 8086cpu 的 PC 机内存地址空间分配如图:
BX
BX
BP
BP
Si
Di
Si
Di 组合出现;
34. 在【】中使用 BP,如果指令没有显性给出段地址,默认在 SS 中;
35. 指令在执行前,所要处理的数据可以在 3 个地方:CPU 内部,内存,端口;
36. 汇编语言用 3 个概念来表达数据的位置:立即数(idata),寄存器,段地址和偏移地址;
37. 操作符 X ptr 指明内存单元的长度,X 可以为 word/byte
F E D C B A 98 7 6 5 4 3 2 1 0 7.字的概念:一个字(word)是由两个字节(Byte)构成的,其中含有高位字节和低位字节; 8.对于实验中溢出的数据,由 PSW 寄存器保存溢出值; 9.以下错误指令是常出现的:
mov ax,bl (不允许 8 位和 16 位寄存器之间传送数据) mov bh,ax (同上) mov al,20000 (8 位寄存器最大的存放值为 255) mov al,100H (不允许将高于 8 位的数据加到 8 位寄存器之中) 10. 8086CPU 采用两个 16 位地址合成的方法来形成一个 20 位的物理地址,它有 20 位地址总 线,达到 1MB 的寻址能力;
movaxbl不允许8位和16位寄存器之间传送数据movbhax同上moval200008位寄存器最大的存放值为255moval100h不允许将高于8位的数据加到8位寄存器之中108086cpu采用两个16位地址合成的方法来形成一个20位的物理地址它有20位地址总线达到1mb的寻址能力
汇编语言(第二版)知识总结
寄存器 (信息存储)
第 2 章 寄存器
AX(accumulate),BX(base),CX(count),DX(data); SI,DI; 5. 8086CPU 有 14 个寄存器 (指针存储器)SP,BP,IP; (段存储器)CS,SS,DS,ES; (标志存储器)PSW; 6. AX:AH(高八位)/AL(低八位)分别可以当做独立寄存器使用,且互不影响;
有意义的汇编程序中至少有一个段,这个段用来存放代码。
格式: assume 段寄存器 :段名 (划线处表示伪代码,由编译器执行)
段名 segment
代码段
mov ax,4c00H
程序返回指令(与中断有关)
Int 21H
段名 ends (表示一个段结束)
end (表示程序结束)
25.加载过程(简略图)
备注: PSP:程序段前缀(0—255 字节) ;
CS:IP 指向的内存单元读取指令,读取的指令进入指令缓存器; IP=IP+所读取指令的长度,从而指向下一条指令;
执行指令,转到步骤一,重复执行此过程; 14. 改变 CS:IP 的指令:JMP 指令,修改方式为“JMP 段地址:偏移地址”,如果仅想修改
IP 的值,修改方式为“JMP 某一合法寄存器”,从而用寄存器的值修改 IP。
21. 出栈后,SS:SP 指向新的栈顶,但之间栈顶的元素还在,只是不在栈中,在之后 PUSH
移动至此后,此数据将会被覆盖。
22.以下操作均可执行(“ ”表示可互换 ):
mov (段)寄存器 寄存器 add/sub 寄存器 数据/寄存器 pop/push (段)寄存器
mov 内存单元 (段)寄存器 add/sub 寄存器 内存单元 pop/push 内存单元
41. offset 取得标号处的偏移地址 nop 空指令(占位置/用于程序对齐/设标号/延时)
42. jmp 指令 依据位移转移的 jmp 指令(CPU 在执行 jmp 指令的时候不要需要转移的目的地址) jmp short 标号 段内短转移 功能:IP=IP+8 位位移(标号处地址-jmp 指令后第一个字节地址) jmp near ptr 标号 段内近转移 功能:IP=IP+16 位位移 转移的目的地址在指令中的 jmp 指令 jmp far ptr 标号 段间转移 功能:CS=标号所在段的段地址,IP=标号在段中的偏移地址 转移地址在寄存器中的 jmp 指令 jmp 16 位 reg 功能:IP=(16 位 reg) 转移地址在内存中的 jmp 指令 Jmp word ptr 内存单元地址(段内转移) 功能:转移的偏移地址是内存单元中的内容 Jmp dword ptr 内存单元地址 (段间转移)功能:内存单元中的高地址处为转移的段地址
dw 8 dup (0)
第 9 章 转移指令的原理
40. 转移指令:可以修改 IP,或同时修改 CS 和 IP 的指令。 8086CPU 的转移行为: 段间转移(修改 CS:IP) 段内转移(只修改 IP) 短转移:IP 修改范围 -128—127 近转移:IP 修改范围 -32768—32767
第 3 章 寄存器(内存访问)
15. 字单元:存放一个字型数据(16 位)的内存单元,由两个地址连续的内存单元,将起始
地址为 N 的字单元简称为 N 地址字单元。 Eg:0012 H 存放在 2 地址字单元
124E H 存放在 1 地址字单元
0 20H
1 4EH
2
12H
3
00H
4
字单元
16. DS 和【address】,分别表示段寄存器和内存单元的偏移地址
程序地址改为 SA+10H:0 ;
SA:0
SA : 0 PSP SA+10H : 0 程序
程序入口为 SA:0 (DS=SA) ; 第一条指令 CS:IP 为 SA+10H:0 ;
第 5 章 【bx】和 loop 指令
26. 【bx】和内存单元的描述 1 【】表示偏移地址,也表示一个内存单元 eg:【bx】表示偏移地址在 BX 中 mov AX,【bx】(这个内存单元长度为 2 字节) mov AL,【bx】(这个内存单元长度为 1 字节) 2 ()表示“一个寄存器或一个内存单元中的内容”
or al,00100000 b (小写)
第 8 章 数据处理的两个基本问题
33. Reg(寄存器):AX,BX,CX,DX(及其 8 位高低寄存器),SP,BP,Si, Di;
Sreg(段寄存器) : DS, SS,CS,ES;
8086CPU 只有 BX,Si,Di, BP 可以用【】来进行内存单元寻址,可以单独出现,或
注意,()可以表示 3 种类型 :寄存器名,段寄存器名,内存单元的物理地址 3 Idata 表示常量 27. Loop 指令的格式: loop 标号 1 (CX)=(CX)- 1; 2 (CX)≠ 0,则转至标号处循环执行
(CX)= 0,则继续向下执行
第 7 章 更灵活的定位内存地址的方法
28. 在汇编程序中,数据不能以字母开头 29. 伪指令:dw 定义字型数据;db 定义字节型数据; dd 定义双字型数据 30. 【bx+idata】/【bx】.idata / idata【bx】三种表示方法 31. Si 和 Di 不能够分成两个 8 位寄存器,功能和 BX 相近; 32. 大小写的转化方法: and al,11011111 b (大写)
00000
主存储器地址 空间(RAM)
存储芯片从读写属性来看:
RAM
ROM
显存地址空间 (RAM) 各类 ROM 地址空 间
9FFFF A0000 BFFFF C0000 FFFFF
(随机存储器)
(只读存储器)
主板,网卡,显卡上的 BIOS 装在 ROM 中,不能写入操作;
运算器 (信息处理)
CPU 控制器 (控制各种器件工作)
17. Mov 指令可以:(1)将数据直接送入寄存器 (2)将一个寄存器的内容送到另一个寄存器
(8086CPU 不支持数据直接入段寄存器)
18. 栈:LIFO(后进先出) 8086CPU 入栈(PUSH)和出栈(POP)以字为单位;
19. SS:SP 任意时刻始终指向栈顶元素,PUSH AX 由下面两步构成:
OF DF IF TF SF ZF
AF
PF
CF
以下情况均为执行后的情况; NhomakorabeaZF (零标志位)
PF (奇偶标志位)
SF(符号标志位)
结果为 0,ZF=1
结果中 1 的个数为奇数,PF=0
结果为负,SF=1
结果不为 0,ZF=0
结果中 1 的个数为偶数,PF=1
结果非负,SF=0
CF (进位标志位) DF(方向标志位)
第 11 章 标志寄存器
48. 8086CPU 的 flag 寄存器的结构:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
11. 8086CPU 采用段地址和偏移地址,通过地址加法器来合成物理地址 物理地址=段地址 x 16 + 偏移地址 (段的大小=偏移地址的长度)
12. 偏移地址 16 位,其变化范围为 0—FFFF H;仅用偏移地址来寻址最多可寻 64KB 个内存 单元;
13. CPU 将 CS:IP 指向的内容作为指令执行,读取一条指令后,IP 值将自动增加,以便使 CPU 读下一条指令,机器码占几个字节,IP 值加几;
mov word ptr ds:【0】,1 表示访问为 1 个字节单元
mov byte ptr ds:【0】,1 表示访问为 2 个字节单元 一般来说,我们可用【bx+idata+si】的方式来访问结构体的数据,用 bx 来定义整个结构
体,用 idata 定位结构体中某一个数据项,用 si 来定义数组中的每个元素;
(1)SP=SP-2,SS:SP 指向当前栈顶前面的单元,以当前栈顶前面的单元作为新的栈顶;
(2)将 AX 中的内容送入 SS:SP 指向的内存单元处,SS:SP 此时指向新栈顶;
20. 8086CPU 入栈时,栈顶从高地址向低地址方向移动,栈为空的时候,SS:SP 指向最底部
的字单元的偏移地址+2;
38. div 指令(除法指令)
8 位除数
16 位除数
16 位被除数
32 位被除数 { AX (低 16 位) DX (高 16 位)}
AL(商)AH(余数)
AX (商)DX(余数)
39. 伪指令 dup
db/dw/dd 重复次数 dup (重复的字节/字型/双字型)
dw 0, 0, 0, 0, 0, 0 ,0, 0
23. 一个栈段最大为 64KB,SP 的变化范围为 0—FFFF H,当 10000H—1FFFF H 时,SS=1000H,
SP=0000H,(此时 SP=SP+2z 只能返回 0000H 处)
第 4 章 第一个程序
24. 一个汇编程序由多个段组成,这些段分别用来存放代码,数据,后者当做栈空间,一个
低地址处是转移的目的偏移地址
43. jcxz 指令 jcxz 标号 功能:相当于 if((cx)==0)jmp short 标号 ; 44. loop 指令 loop 标号 功能:相当于 (cx)-- ;if((cx)!=0)jmp short 标号 ;
第 10 章 CAll 和 RET 指令
45. call 指令(和 jmp 指令进行比较) 依据位移转移的 call 指令(CPU 在执行 call 指令的时候不要需要转移的目的地址) call 标号 相当于 push IP / jmp near ptr 标号; 转移的目的地址在指令中的 call 指令 call far ptr 标号 相当于 push CS / push IP / jmp far ptr 标号; 转移目的地址在寄存器中的 call 指令 call 16 位 reg 相当于 push IP / jmp 16 位 reg; 转移地址在内存中的 call 指令 call word ptr 内存单元地址 相当于 push IP / jmp word ptr 内存单元地址; call dword ptr 内存单元地址 相当于 push CS / push IP /jmp dword ptr 标号; 46. ret 和 retf 指令 ret 指令用栈中的数据,修改 IP 的内容,从而实现近转移,相当于 pop IP; retf 指令用栈中的数据,修改 CS 和 IP 中的内容,从而实现远转移;
第一章 基础知识
1. 存储单元为 1Byte,即字节。
2. 微小信息单位为 1bit,其中 1Byte=8bit。
3. Cpu 的寻址能力 对于地址总线来说,N 根地址总线,寻址能力为 2N B。 对于数据总线来说,N 根地址总线,寻址能力为 N/8 B。
4. 8086cpu 的 PC 机内存地址空间分配如图:
BX
BX
BP
BP
Si
Di
Si
Di 组合出现;
34. 在【】中使用 BP,如果指令没有显性给出段地址,默认在 SS 中;
35. 指令在执行前,所要处理的数据可以在 3 个地方:CPU 内部,内存,端口;
36. 汇编语言用 3 个概念来表达数据的位置:立即数(idata),寄存器,段地址和偏移地址;
37. 操作符 X ptr 指明内存单元的长度,X 可以为 word/byte
F E D C B A 98 7 6 5 4 3 2 1 0 7.字的概念:一个字(word)是由两个字节(Byte)构成的,其中含有高位字节和低位字节; 8.对于实验中溢出的数据,由 PSW 寄存器保存溢出值; 9.以下错误指令是常出现的:
mov ax,bl (不允许 8 位和 16 位寄存器之间传送数据) mov bh,ax (同上) mov al,20000 (8 位寄存器最大的存放值为 255) mov al,100H (不允许将高于 8 位的数据加到 8 位寄存器之中) 10. 8086CPU 采用两个 16 位地址合成的方法来形成一个 20 位的物理地址,它有 20 位地址总 线,达到 1MB 的寻址能力;
movaxbl不允许8位和16位寄存器之间传送数据movbhax同上moval200008位寄存器最大的存放值为255moval100h不允许将高于8位的数据加到8位寄存器之中108086cpu采用两个16位地址合成的方法来形成一个20位的物理地址它有20位地址总线达到1mb的寻址能力
汇编语言(第二版)知识总结
寄存器 (信息存储)
第 2 章 寄存器
AX(accumulate),BX(base),CX(count),DX(data); SI,DI; 5. 8086CPU 有 14 个寄存器 (指针存储器)SP,BP,IP; (段存储器)CS,SS,DS,ES; (标志存储器)PSW; 6. AX:AH(高八位)/AL(低八位)分别可以当做独立寄存器使用,且互不影响;
有意义的汇编程序中至少有一个段,这个段用来存放代码。
格式: assume 段寄存器 :段名 (划线处表示伪代码,由编译器执行)
段名 segment
代码段
mov ax,4c00H
程序返回指令(与中断有关)
Int 21H
段名 ends (表示一个段结束)
end (表示程序结束)
25.加载过程(简略图)
备注: PSP:程序段前缀(0—255 字节) ;
CS:IP 指向的内存单元读取指令,读取的指令进入指令缓存器; IP=IP+所读取指令的长度,从而指向下一条指令;
执行指令,转到步骤一,重复执行此过程; 14. 改变 CS:IP 的指令:JMP 指令,修改方式为“JMP 段地址:偏移地址”,如果仅想修改
IP 的值,修改方式为“JMP 某一合法寄存器”,从而用寄存器的值修改 IP。
21. 出栈后,SS:SP 指向新的栈顶,但之间栈顶的元素还在,只是不在栈中,在之后 PUSH
移动至此后,此数据将会被覆盖。
22.以下操作均可执行(“ ”表示可互换 ):
mov (段)寄存器 寄存器 add/sub 寄存器 数据/寄存器 pop/push (段)寄存器
mov 内存单元 (段)寄存器 add/sub 寄存器 内存单元 pop/push 内存单元
41. offset 取得标号处的偏移地址 nop 空指令(占位置/用于程序对齐/设标号/延时)
42. jmp 指令 依据位移转移的 jmp 指令(CPU 在执行 jmp 指令的时候不要需要转移的目的地址) jmp short 标号 段内短转移 功能:IP=IP+8 位位移(标号处地址-jmp 指令后第一个字节地址) jmp near ptr 标号 段内近转移 功能:IP=IP+16 位位移 转移的目的地址在指令中的 jmp 指令 jmp far ptr 标号 段间转移 功能:CS=标号所在段的段地址,IP=标号在段中的偏移地址 转移地址在寄存器中的 jmp 指令 jmp 16 位 reg 功能:IP=(16 位 reg) 转移地址在内存中的 jmp 指令 Jmp word ptr 内存单元地址(段内转移) 功能:转移的偏移地址是内存单元中的内容 Jmp dword ptr 内存单元地址 (段间转移)功能:内存单元中的高地址处为转移的段地址
dw 8 dup (0)
第 9 章 转移指令的原理
40. 转移指令:可以修改 IP,或同时修改 CS 和 IP 的指令。 8086CPU 的转移行为: 段间转移(修改 CS:IP) 段内转移(只修改 IP) 短转移:IP 修改范围 -128—127 近转移:IP 修改范围 -32768—32767
第 3 章 寄存器(内存访问)
15. 字单元:存放一个字型数据(16 位)的内存单元,由两个地址连续的内存单元,将起始
地址为 N 的字单元简称为 N 地址字单元。 Eg:0012 H 存放在 2 地址字单元
124E H 存放在 1 地址字单元
0 20H
1 4EH
2
12H
3
00H
4
字单元
16. DS 和【address】,分别表示段寄存器和内存单元的偏移地址
程序地址改为 SA+10H:0 ;
SA:0
SA : 0 PSP SA+10H : 0 程序
程序入口为 SA:0 (DS=SA) ; 第一条指令 CS:IP 为 SA+10H:0 ;
第 5 章 【bx】和 loop 指令
26. 【bx】和内存单元的描述 1 【】表示偏移地址,也表示一个内存单元 eg:【bx】表示偏移地址在 BX 中 mov AX,【bx】(这个内存单元长度为 2 字节) mov AL,【bx】(这个内存单元长度为 1 字节) 2 ()表示“一个寄存器或一个内存单元中的内容”
or al,00100000 b (小写)
第 8 章 数据处理的两个基本问题
33. Reg(寄存器):AX,BX,CX,DX(及其 8 位高低寄存器),SP,BP,Si, Di;
Sreg(段寄存器) : DS, SS,CS,ES;
8086CPU 只有 BX,Si,Di, BP 可以用【】来进行内存单元寻址,可以单独出现,或
注意,()可以表示 3 种类型 :寄存器名,段寄存器名,内存单元的物理地址 3 Idata 表示常量 27. Loop 指令的格式: loop 标号 1 (CX)=(CX)- 1; 2 (CX)≠ 0,则转至标号处循环执行
(CX)= 0,则继续向下执行
第 7 章 更灵活的定位内存地址的方法
28. 在汇编程序中,数据不能以字母开头 29. 伪指令:dw 定义字型数据;db 定义字节型数据; dd 定义双字型数据 30. 【bx+idata】/【bx】.idata / idata【bx】三种表示方法 31. Si 和 Di 不能够分成两个 8 位寄存器,功能和 BX 相近; 32. 大小写的转化方法: and al,11011111 b (大写)
00000
主存储器地址 空间(RAM)
存储芯片从读写属性来看:
RAM
ROM
显存地址空间 (RAM) 各类 ROM 地址空 间
9FFFF A0000 BFFFF C0000 FFFFF
(随机存储器)
(只读存储器)
主板,网卡,显卡上的 BIOS 装在 ROM 中,不能写入操作;
运算器 (信息处理)
CPU 控制器 (控制各种器件工作)
17. Mov 指令可以:(1)将数据直接送入寄存器 (2)将一个寄存器的内容送到另一个寄存器
(8086CPU 不支持数据直接入段寄存器)
18. 栈:LIFO(后进先出) 8086CPU 入栈(PUSH)和出栈(POP)以字为单位;
19. SS:SP 任意时刻始终指向栈顶元素,PUSH AX 由下面两步构成:
OF DF IF TF SF ZF
AF
PF
CF
以下情况均为执行后的情况; NhomakorabeaZF (零标志位)
PF (奇偶标志位)
SF(符号标志位)
结果为 0,ZF=1
结果中 1 的个数为奇数,PF=0
结果为负,SF=1
结果不为 0,ZF=0
结果中 1 的个数为偶数,PF=1
结果非负,SF=0
CF (进位标志位) DF(方向标志位)