PC硬件04章汇编语言基础:寻址方式.ppt

上传人:本田雅阁 文档编号:2090332 上传时间:2019-02-12 格式:PPT 页数:48 大小:812.01KB
返回 下载 相关 举报
PC硬件04章汇编语言基础:寻址方式.ppt_第1页
第1页 / 共48页
PC硬件04章汇编语言基础:寻址方式.ppt_第2页
第2页 / 共48页
PC硬件04章汇编语言基础:寻址方式.ppt_第3页
第3页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《PC硬件04章汇编语言基础:寻址方式.ppt》由会员分享,可在线阅读,更多相关《PC硬件04章汇编语言基础:寻址方式.ppt(48页珍藏版)》请在三一文库上搜索。

1、1,预备知识,2,CPU、寄存器、存储器,8086/8088 CPU的结构,3,8086/8088 CPU的结构,内存,外设I/O,DB AB CB,数据总线DB 地址总线AB 控制总线CB,通用 寄存器,指针与变址寄存器,段寄存器,标志 寄存器,4,8086/8088 CPU的结构,内存,外设I/O,DB AB CB,数据总线DB 地址总线AB 控制总线CB,通用 寄存器,指针与变址寄存器,段寄存器,取指(令),译码,取数 (数据或地址),执行,标志 寄存器,5,CPU执行程序的过程,从内存取指令,执行指令,从内存取指令,执行指令,从内存取指令,执行指令,传统CPU执行指令的过程,现代CPU

2、执行指令的过程,6,8086/8088 CPU的寄存器,8086/8088的寄存器分为4种类型: (1)通用寄存器 (2)指针和变址寄存器 (3)段寄存器 (4)标志寄存器,7,(1)通用寄存器,8,(2)指针与变址寄存器,9,(3)段寄存器,10,(4)标志寄存器,标志寄存器长度为16位,其中9个位有定义。,溢出overflow Flag,方向direction Flag,中断interrupt Flag,符号symbol,-negative, +positive,零zero,辅助进位Auxiliary Carry Flag,奇偶parity,偶even, 奇odd,进位carry,TF陷阱

3、,单步trap,11,CF, Carry Flag, 进位标志 两数相加,最高位向前位的进位; 或两数相减最高位向前位的借位 举例:,有进位CF=1,有借位CF=1,两数相加,两数相减,2,12,AF, Auxiliary Carry Flag 辅助进位标志(半进位) 两数相加,第3位向前位的进位; 或两数相减第3位向前位的借位 举例:,0000 1001 0001 1000 0001 0001,+,0000 0000 0000 0001 1111 1111,两数相加,有辅助进位AF=1,有辅助借位AF=1,两数相减,2,13,PF, Parity Flag, 奇偶标志 算术或逻辑运算结果的低

4、8位中含有1的位数是偶数时: PF=1;是奇数时: PF=0 举例:,1000 0101 1010 1100 1001 1101 1001 0111 1000 0101 1000 0100,AND,运算结果AL中有2个“1”,偶性,结果为: PF=1,14,ZF, Zero Flag 零标志 计算处理结果为0,则ZF为1 . 举例:,1111 1111 0000 0001 0000 0000,+,进位1,相加结果为0, ZF=1,相加结果有进位, CF=1,15,SF, Sign Flag, 符号标志 操作结果的符号位(即最高位的状态),结果为正SF=0,为负SF=1 举例:,1000 010

5、1 1010 1100 1001 1101 1001 0111 1000 0101 1000 0100,AND,结果为负: SF=1,16,OF, Overflow Flag, 溢出标志 算术操作,结果超过目标所能容纳的范围 举例:,0111 1110 (+126) 0000 0011 (+3) 1000 0001 (-127),+,进位到符号位,值被改变,溢出,CF=1,17,IF interrupt 中断允许标志 (允许中断否) DF direction 方向标志 (存取方向) TF trap 陷阱标志,单步标志 (用于调试程序),标志位在汇编语言程序设计中非常重要,必须掌握好,18,中为

6、英文全拼或简拼(为简化部分),单词中的大写部分为简写所取字符。,标志名 中文 标志为1时 标志为0时 OFOverflow Flag 溢出标志 ovOVerflow nvNot oVerflow DFDirection Flag 方向 dnDowN upUP IFInterrupt Flag 中断 eiEnable It diDisable It SFSign Flag 符号 ngNeGative sign plPLus sign ZFZero Flag 零 zrZeRo nzNot Zero AFAuxiliary carry Flag 辅进位 acAuxiliary Carry naNot

7、 Aux PFParity Flag 奇偶校验 peParity Even poParity Odd CFCarry Flag 进位 cyCarrY ncNot Carry,19,debug中查看状态寄存器,debug中查看状态寄存器 of(溢出) df(方向) if(中断) sf(符号) zf(零) af(辅助进位)pf(奇偶) cf(进位) 为1的时候 ov(OVerflow) dn(DowN) ei(Enable Interrupt) ng(NeGtive) zr(ZeRo) ac(Auxiliary Carry) pe(Parity Even) cy(CarrY) 为0的时候 nv(N

8、ot oVerflow) up(UP) di(DIsable interrupt) pl(PLus) nz(Not Zero) na(Not Auxiliary) po(Parity Odd) nc(Not Carry),20,3.2.1 存储器的分段结构,21,第四章 汇编语言,一、寻址方式 (8086CPU) (80X86CPU),22,通用寄存器,8086,Accumulator 累加器 Base 基址寄存器 Count 计数寄存器 Data 数据寄存器 Stack pointer 堆栈指示器 Base pointer 基址指示器 Source index 源变址器 Destinatio

9、n index 目的变址器,23,通用寄存器,80486,8086,Accumulator 累加器 Base 基址 Count 计数 Data 数据 Stack pointer 堆栈指示器 Base pointer 基址指示器 Source index 源变址器 Destination index 目的变址器,24,通用寄存器,80486,8086,Accumulator 累加器 Base 基址 Count 计数 Data 数据 Stack pointer 堆栈指示器 Base pointer 基址指示器 Source index 源变址器 Destination index 目的变址器,指示

10、器和变址寄存器 访问内存必须指出要访问的内存单元地址, 这些地址值会增加指令的长度。 把地址存放在特定的寄存器中,则指令中只要给出这些寄存器的名称即可,它们是: 变址寄存器 指针寄存器 SI DI SP BP 与 DS 联用 与 SS 联用 数据段寄存器 堆栈段寄存器,数据段寻址,堆栈段寻址,25,8086是16位CPU 内部寄存器和内部数据线、外部数据线均为16位 地址线20位 ,可直接寻址 1MB。 (220=1MB) 如何使用 16 位寄存器生成 20 位地址呢? 存储器 分段,使用段寄存器CS,DS,SS,ES存储段基址 * 将 1 MB空间分为若干段,每段 64 KB(216 = 6

11、4K) * 每段的起始地址值为 1MB空间中任一个能被 16 整除的地 址值,即每段起始地址值的低 4 位恒为 0(二进制数) 。 * 物理地址由二部分组成: 段起始地址 相对段起始地址的偏移量 *段可以相互重叠。故存储器分段方案众多。,存储器分段,段基址与内存单元的距离 偏移地址,段起始地址,物理地址=段基址左移4位+偏移量,26,8086是16位CPU 内部寄存器和内部数据线、外部数据线均为16位 地址线20位 ,可直接寻址 1MB。 (220=1MB) 如何使用 16 位寄存器生成 20 位地址呢? 将 1 MB空间分为若干段,每段 64 KB(216 = 64K) 使用段寄存器CS,D

12、S,SS,ES 存储段基址,存储器分段,27,3.2.2 实际物理地址的产生,举例:,CS=9482, IP=2350, 实际地址为: 1001 0100 1000 0010 0010 0011 0101 0000 1001 0110 1011 0111 0000,一个实际地址可以对应多个逻辑地址.,+,CS=9482,IP=2350,物理地址,28,存储器 分段,例如, 某个段寄存器内容为 C018H,即表示该段物理地址从 C018 0 H 开始,该段最后一个地址为: C 0 1 8 0 H + F F F F H = D 0 1 7 F H,64KB,29,存储器 分段,存储器分段从 80

13、86 开始使用段寄存器,(CS)+0000,(DS)+0000,(SS)+0000,(ES)+0000,代码段 共64K 字节,附加段 共64K 字节,堆栈段 共64KB 字节,数据段 共64KB字节,重叠部分,存储器分段可以相互重叠,.,1MB,段末地址 (CS)+0ffffH,段末地址 (ES)+0ffffH,64KB,64KB,30,寻址方式 (8086指令集),1.在指令中 2.在寄存器中 3.在存储器中 4.I/O端口操作数,立即数 寄存器操作数 存储器操作数 I/O操作数,立即数寻址 寄存器寻址 存储器寻址 I/O端口寻址,第1种寻址方式:mov ax,1234,第2种寻址方式:

14、mov bx,ax,有7种寻址方式,第3-9种,有2种寻址方式,第10,11种,立即数,4个位置,4种操作数,11种寻址方式,寻找操作数的方式叫寻址方式,寻址方式越多,CPU的功能越强大,31,每段起始地址值的低 4 位恒为 0(二进制数)。 物理地址由二部分组成: 段起始地址 相对段起始地址的偏移量 *段可以相互重叠。故存储器分段方案众多。,存储器分段,段基址与内存单元的距离 偏移地址,物理地址=段基址左移4位+偏移量,32,寻址方式(8086指令集) 操作数可能存放在4个位置: 1.在指令中 立即数 立即数寻址: mov ax,1234,mov ax,1234,mov bx,5bcfH,1

15、,11种寻址方式的第1种,;ax1234 ah12 al34,;bx5bcf H blcf H bh5b H,立即数寻址,33,mov bx,ax,2,2.在寄存器中 寄存器操作数 寄存器寻址: mov bx,ax,11种寻址方式的第2种,mov cx,bx,;bxax,;cxbx,寄存器寻址,34,mov al,1000H,直接寻址: mov ax,1000H,3,xx,地址,内容,地址,内容,al(1000H),;al(1000H),ah(1001H),段寄存器为DS=2000H,段寄存器为DS=4000H,若操作数不在DS段,须指明 mov al,ES:1000H,直接寻址,mov al

16、,ES:1000H,mov ax,ES:1000H,2,2,2,2,2,2,偏移地址,物理地址= DS:偏移地址= 2000H:1001H= 20000H+1001H=21001H (即DS左移4位加偏移地址),3456H,物理地址,35,mov al,1000H,直接寻址: mov ax,1000H,3,xx,地址,内容,地址,内容,al(1000H),;al(1000H),ah(1001H),段寄存器为DS,段寄存器为DS,段寄存器为DS DS: xxxx H DS: 1000 H DS: 1002 H,若操作数不在DS段,须指明 mov al,ES:1000H,直接寻址,mov al,E

17、S:1000H,mov ax,ES:1000H,36,寄存器间接寻址:si ,di ,bx ,bp,使用的寄存器,基址寻址:bx/bp,4,mov bp ,al,bp用段寄存器SS: (除BP外,均用DS: ),mov bx ,al,段寄存器为DS,34,;bp al,即:,;DS:bx al,寄存器间接寻址,;SS:bp al,物理:10fffH,物理:21002H,37,5,变址寻址:si/di,mov di , ax,段寄存器为DS,mov ax , 7864H,mov di, 1001H,64,78,;DS:di ax,;di 1001H,;ax 7864H,物理:11001H,若先执

18、行:,设:,若操作数不在DS段,须指明 mov al,ES:1000H,周四34节9-27至此,38,6,基址加变址寻址:bx/bp si/di,mov bp di , al,基址寄存器,mov bx si , r/sr,mov bx+si , ax,变址寄存器,bx si bx di bp si bp di,bx bp si di bp bx di si,;bp +di al,;bp +si al ; bx +si+1 ah,16位数据传送,39,7,带位移量 寄存器相对 间接寻址,8,nnnnBX/BP 例:mov 100bp,ah ;bp+100ah,BX/BP+nnnn 例:mov b

19、x+18,cx ;bx+18cx,BX/BP+nnnn 例: mov bp+87,dl ;bp+87dl,带位移基址寻址:有效地址 = 基地址 + 位移量,带位移变址寻址:有效地址 = 变地址 + 位移量,nnnnSI/DI 例: mov 200di,bl ;di+200bl,SI/DI +nnnn 例:mov si+11,ch ;si+11ch,SI/DI+nnnn 例: mov di+26,dx ;di+26dx,9,带位移基址加变址寻址: 有效地址 = 基地址 + 变地址 + 位移量,nnBX/BPSI/DI 例: mov 100bxsi,cl ;bx+si +100 cl,BX/BP+

20、SI/DI+nn 例:mov bx+si +100,ch;bx+si +100 cl,BX/BP+SI/DI +nn例:mov bx+si +100,ch;bx+si +100 cl,BX/BP,nnnn,SI/DI,nnnn,三种格式 功能相同,三种格式 功能相同,40,字段0,字段n,字段n-1,字段2,字段1,基址寄存器,+,(位移量),MOV AX, BX+100H,变,不变,变,不变,7,带位移基址寻址:有效地址 = 基地址 + 位移量,用于查表数据结构寻址,100H,BX,例:,反之:100H固定不变,改变BX的值进行查表,亦可,41,(位移量),数据阵列寻址,查表,单元0,单元n

21、,单元n-1,单元2,单元1,变址寄存器,+,MOV AX, SI+100H,不变,变,变,不变,8,带位移变址寻址:有效地址 = 变地址 + 位移量,SI,100H,编程中“变”与“不变”的内容可以灵活掌握: 100H固定不变,改变SI的值进行查表,未尚不可,42,单元(0,0),单元(0,1),单元(0,n),(位移量),二维数据寻址,基址寄存器,+,MOV AX, BX+SI+100H,单元(m,n),变址寄存器,+,变,不变,变,9,带位移基址加变址寻址: 有效地址 = 基地址 + 变地址 + 位移量,BX,SI,100H,43,操作数可能存放在4个位置: 1.在指令中 立即数 立即数

22、寻址: 第1种寻址方式 2.在寄存器中寄存器操作数 寄存器寻址: 第2种寻址方式 3.在存储器中存储器操作数 存储器寻址: 7种寻址方式(39),10,I/O端口寻址:,in al/ax,nn 例: in al , 77h ;al77h,out nn, al/ax 例: out 77h , ax ;77hax,直接I/O端口寻址(8位口) :,dx 寄存器间接I/O端口寻址(16位口),8位I/O端口地址,in al/ax ,dx 例: in al , dx ;al dx,out dx , al/ax 例: out dx , al ;dx ax,16位I/O端口地址,11,mov dx ,37

23、8H,共11种寻址方式,已学习了9种:,4.I/O端口操作数I/O操作数 I/O端口寻址:2种寻址方式(1011),还有2种:,44,I/O端口寻址,寄存器间接寻址,立即数,括号内是地址,基址R,(源)变址R,8位端口地址,16位端口地址,寻址方式 复习,偏移量,1. 立即数寻址 MOV AX, 1234H 2. 寄存器寻址 MOV AX, BX 3. 直接寻址 MOV AX, 1234H 4. 基址寻址 MOV AX, BX 5. 变址寻址 MOV AX, SI 6. 基址加变址寻址 MOV AX, BX+SI 7. 带位移基址寻址 MOV AX, BX+100H 8. 带位移变址寻址 MO

24、V AX, SI+100H 9. 带位移基址加变址寻址 MOV AX, BX+SI+100H 10. I/O端口直接寻址(8位口) IN AL , 71H OUT 70H ,AL 11. DX 寄存器I/O端口间接寻址(16位口) IN AL,DX OUT DX,AL,基址加变址R,45,作业4:指出每条指令的寻址方式及操作结果。 1. MOV AX, 44fdH 2. MOV AX, CX 3. MOV AX, 6657H 4. MOV AX, BX 5. MOV AX, SI 6. MOV AX, BX+SI 7. MOV AX, BX+220H 8. MOV AX, SI+340H 9.

25、 MOV AX, BX+SI+780H 10. IN AL , 40H OUT 41H ,AL 11. IN AL,DX OUT DX,AL,46,授课结束,47,48,二、寻址方式(8086指令集) 操作数可能存放在4个位置: 1.在指令中 立即数 立即数寻址: mov ax,1234 2.在寄存器中寄存器操作数 寄存器寻址: mov bx,ax 3.在存储器中存储器操作数 存储器寻址: 7种寻址方式(39) 4.I/O端口操作数I/O操作数 I/O端口寻址:2种寻址方式(1011),mov ax,1234,Mov bx,ax,Mov al,1000H,Mov si,ah,Mov bp,al

26、,Mov di,ax,Mov bpdi,al,Mov bp+di,ax,Mov 100bp,bh,Mov 200di,bl,Mov 100+bx+si,ch,3,4,5,6,7,9,Mov 100bxsi,cl,8,(I/O 端口操作数) I/O端口寻址: 直接寻址(8位口) : out nn , al/ax dx 寄存器间接寻址(16位口) : out dx,al/ax,out 77h,al,in al,dx,in al ,77h,out dx,al,10,11,1,2,SS:,存储器操作数存储器寻址: 直接寻址: mov ax,1000H 寄存器间接寻址: si,di,bx,bp 基址寻址:bx/bp 变址寻址:si/di 基址加变址寻址:bx/bpsi/di mov bxsi,nn/nnnn/r/sr 寄存器相对寻址(带位移) 相对基址寻址nnnnBX/BP 相对变址寻址nnSI/DI 相对基址加变址寻址nnBX/BPSI/DI,DS:,11种寻址方式,有效地址 = 基地址 + 变地址 + 位移量,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1