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

上传人:小飞机 文档编号:6513882 上传时间:2023-11-08 格式:PPT 页数:48 大小:717KB
返回 下载 相关 举报
PC硬件04章汇编语言基础:寻址方式.ppt_第1页
第1页 / 共48页
PC硬件04章汇编语言基础:寻址方式.ppt_第2页
第2页 / 共48页
PC硬件04章汇编语言基础:寻址方式.ppt_第3页
第3页 / 共48页
PC硬件04章汇编语言基础:寻址方式.ppt_第4页
第4页 / 共48页
PC硬件04章汇编语言基础:寻址方式.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

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

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

2、086/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陷阱,单步trap,11,CF,Car

3、ry Flag,进位标志 两数相加,最高位向前位的进位;或两数相减最高位向前位的借位 举例:,有进位CF=1,有借位CF=1,两数相加,两数相减,2,12,AF,Auxiliary Carry Flag辅助进位标志(半进位)两数相加,第3位向前位的进位;或两数相减第3位向前位的借位 举例:,0000 10010001 10000001 0001,+,0000 00000000 00011111 1111,两数相加,有辅助进位AF=1,有辅助借位AF=1,两数相减,2,13,PF,Parity Flag,奇偶标志算术或逻辑运算结果的低8位中含有1的位数是偶数时:PF=1;是奇数时:PF=0 举例

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

5、100,AND,结果为负:SF=1,16,OF,Overflow Flag,溢出标志算术操作,结果超过目标所能容纳的范围举例:,0111 1110(+126)0000 0011(+3)1000 0001(-127),+,进位到符号位,值被改变,溢出,CF=1,17,IFinterrupt中断允许标志(允许中断否)DF direction方向标志(存取方向)TF trap 陷阱标志,单步标志(用于调试程序),标志位在汇编语言程序设计中非常重要,必须掌握好,18,中为英文全拼或简拼(为简化部分),单词中的大写部分为简写所取字符。,标志名中文标志为1时标志为0时OFOverflow Flag 溢出标

6、志ovOVerflow nvNot oVerflowDFDirection Flag方向dnDowNupUPIFInterrupt Flag中断eiEnable ItdiDisable ItSFSign Flag符号ngNeGative signplPLus signZFZero Flag零zrZeRo nzNot ZeroAFAuxiliary carry Flag辅进位acAuxiliary CarrynaNot AuxPFParity Flag奇偶校验 peParity EvenpoParity OddCFCarry Flag 进位 cyCarrYncNot Carry,19,debug

7、中查看状态寄存器,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(Not oVerflow)up(UP)di(DIsable interrupt)pl(PLus)nz(Not Zero)na(Not Auxiliary)po(Parity Odd)nc(Not Carry),20,3.2

8、.1 存储器的分段结构,21,第四章 汇编语言,一、寻址方式(8086CPU)(80X86CPU),22,通用寄存器,8086,Accumulator 累加器Base 基址寄存器Count 计数寄存器Data 数据寄存器Stack pointer 堆栈指示器Base pointer 基址指示器Source index 源变址器Destination index 目的变址器,23,通用寄存器,80486,8086,Accumulator 累加器Base 基址Count 计数Data 数据Stack pointer 堆栈指示器Base pointer 基址指示器Source index 源变址器D

9、estination index 目的变址器,24,通用寄存器,80486,8086,Accumulator 累加器Base 基址Count 计数Data 数据Stack pointer 堆栈指示器Base pointer 基址指示器Source index 源变址器Destination index 目的变址器,指示器和变址寄存器访问内存必须指出要访问的内存单元地址,这些地址值会增加指令的长度。把地址存放在特定的寄存器中,则指令中只要给出这些寄存器的名称即可,它们是:变址寄存器 指针寄存器 SI DI SP BP 与 DS 联用 与 SS 联用 数据段寄存器 堆栈段寄存器,数据段寻址,堆栈段

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

11、偏移量,26,8086是16位CPU内部寄存器和内部数据线、外部数据线均为16位 地址线20位,可直接寻址 1MB。(220=1MB)如何使用 16 位寄存器生成 20 位地址呢?将 1 MB空间分为若干段,每段 64 KB(216=64K)使用段寄存器CS,DS,SS,ES 存储段基址,存储器分段,27,3.2.2 实际物理地址的产生,举例:,CS=9482,IP=2350,实际地址为:1001 0100 1000 0010 0010 0011 0101 00001001 0110 1011 0111 0000,一个实际地址可以对应多个逻辑地址.,+,CS=9482,IP=2350,物理地址

12、,28,存储器 分段,例如,某个段寄存器内容为 C018H,即表示该段物理地址从 C018 0 H 开始,该段最后一个地址为:C 0 1 8 0 H+F F F F H=D 0 1 7 F H,64KB,29,存储器 分段,存储器分段从 8086 开始使用段寄存器,(CS)+0000,(DS)+0000,(SS)+0000,(ES)+0000,代码段共64K 字节,附加段共64K 字节,堆栈段共64KB 字节,数据段共64KB字节,重叠部分,存储器分段可以相互重叠,.,1MB,段末地址(CS)+0ffffH,段末地址(ES)+0ffffH,64KB,64KB,30,寻址方式(8086指令集),

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

14、址,物理地址=段基址左移4位+偏移量,32,寻址方式(8086指令集)操作数可能存放在4个位置:1.在指令中 立即数 立即数寻址:mov ax,1234,mov ax,1234,mov bx,5bcfH,1,11种寻址方式的第1种,;ax1234ah12al34,;bx5bcf Hblcf Hbh5b 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(

15、1000H),;al(1000H),ah(1001H),段寄存器为DS=2000H,段寄存器为DS=4000H,若操作数不在DS段,须指明mov al,ES:1000H,直接寻址,mov al,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,段

16、寄存器为DS,段寄存器为DSDS:xxxx HDS:1000 HDS:1002 H,若操作数不在DS段,须指明mov al,ES:1000H,直接寻址,mov al,ES: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

17、 ax,7864H,mov di,1001H,64,78,;DS:di ax,;di 1001H,;ax 7864H,物理:11001H,若先执行:,设:,若操作数不在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 sibx dibp sibp di,bx bpsi dibp bxdi si,;bp+di al,;bp+si al;bx+si+1 ah,16位数据传送,39,7,带位移量 寄存器相对 间接寻址,8

18、,nnnnBX/BP 例:mov 100bp,ah;bp+100ah,BX/BP+nnnn 例:mov bx+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 100b

19、xsi,cl;bx+si+100 cl,BX/BP+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,(位移量),数据阵

20、列寻址,查表,单元0,单元n,单元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.在指令中 立即数 立即数寻

21、址:第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,378H,共11种寻址方式,已学习了9种:,4.I/O端

22、口操作数I/O操作数 I/O端口寻址:2种寻址方式(1011),还有2种:,44,I/O端口寻址,寄存器间接寻址,立即数,括号内是地址,基址R,(源)变址R,8位端口地址,16位端口地址,寻址方式复习,偏移量,1.立即数寻址MOV AX,1234H2.寄存器寻址MOV AX,BX3.直接寻址MOV AX,1234H4.基址寻址MOV AX,BX5.变址寻址MOV AX,SI6.基址加变址寻址MOV AX,BX+SI7.带位移基址寻址MOV AX,BX+100H8.带位移变址寻址MOV AX,SI+100H9.带位移基址加变址寻址 MOV AX,BX+SI+100H10.I/O端口直接寻址(8位

23、口)IN AL,71HOUT 70H,AL11.DX 寄存器I/O端口间接寻址(16位口)IN AL,DX OUT DX,AL,基址加变址R,45,作业4:指出每条指令的寻址方式及操作结果。1.MOV AX,44fdH2.MOV AX,CX3.MOV AX,6657H4.MOV AX,BX5.MOV AX,SI6.MOV AX,BX+SI7.MOV AX,BX+220H8.MOV AX,SI+340H9.MOV AX,BX+SI+780H10.IN AL,40HOUT 41H,AL11.IN AL,DX OUT DX,AL,46,授课结束,47,48,二、寻址方式(8086指令集)操作数可能存

24、放在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,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

25、 端口操作数)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备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号