【教学课件】第3章80x86汇编语言程序设计(上)16位汇编版本.ppt
《【教学课件】第3章80x86汇编语言程序设计(上)16位汇编版本.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第3章80x86汇编语言程序设计(上)16位汇编版本.ppt(173页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、现代微机原理与接口技术现代微机原理与接口技术http:/http:/第第3章章 80 x86汇编语言程序设计汇编语言程序设计(上上)16位汇编版本位汇编版本1现代微机原理与接口技术现代微机原理与接口技术http:/http:/有效地址有效地址有效地址有效地址(effective address EAeffective address EA)操作数在段内的偏移地址操作数在段内的偏移地址操作数在段内的偏移地址操作数在段内的偏移地址寻址方式寻址方式寻址方式寻址方式 产生有效地址的方法产生有效地址的方法产生有效地址的方法产生有效地址的方法80 x86的操作数寻址方式有:的操作数寻址方式有:1、立即寻址
2、、立即寻址2、寄存器寻址、寄存器寻址3、存储器寻址、存储器寻址4、端口寻址、端口寻址3.1 80 x86的寻址方式的寻址方式3.1.1 操作数寻址操作数寻址2现代微机原理与接口技术现代微机原理与接口技术http:/http:/1、立即寻址立即寻址 操作数以常量形式直接放在指令中,紧跟在操作码之后操作数以常量形式直接放在指令中,紧跟在操作码之后操作数以常量形式直接放在指令中,紧跟在操作码之后操作数以常量形式直接放在指令中,紧跟在操作码之后 机器码存放形式如下:机器码存放形式如下:立即寻址示例立即寻址示例 MOV AH,-40-40 ;-40AH MOV AX,34D8H 34D8H ;34HAH
3、,D8HAL MOV AX,-40-40 ;0FFD8H(-40)AX 我们首先讨论两种与存储器无关的寻址方式:我们首先讨论两种与存储器无关的寻址方式:我们首先讨论两种与存储器无关的寻址方式:我们首先讨论两种与存储器无关的寻址方式:OPD8操作码操作码8位操作数位操作数低地址低地址高地址高地址OP操作码操作码D16高高8位位D16低低8位位16位操作数位操作数代码段代码段代码段代码段3现代微机原理与接口技术现代微机原理与接口技术http:/http:/2、寄存器寻址寄存器寻址 操作数存放在某个寄存器中,指令指定寄存器号操作数存放在某个寄存器中,指令指定寄存器号操作数存放在某个寄存器中,指令指定
4、寄存器号操作数存放在某个寄存器中,指令指定寄存器号 寄存器号寄存器号操作数操作数寄存器寻址示例寄存器寻址示例 MOV AH,BLAH,BL ;(BL)-AH MOV DS,AXDS,AX ;(AX)-DS MOV SI,AXSI,AX ;(AX)-SI说明:立即寻址和寄存器寻址方式不需访问存储器说明:立即寻址和寄存器寻址方式不需访问存储器说明:立即寻址和寄存器寻址方式不需访问存储器说明:立即寻址和寄存器寻址方式不需访问存储器即可得到操作数,速度快即可得到操作数,速度快即可得到操作数,速度快即可得到操作数,速度快指令指令寄存器寄存器4现代微机原理与接口技术现代微机原理与接口技术http:/htt
5、p:/有效地址有效地址(EA)的的4种组成成分:种组成成分:位移量位移量位移量位移量(displacement)存放在指令中的存放在指令中的8位、位、16位或位或32位的数,是一个地址位的数,是一个地址 有效地址的计算:有效地址的计算:EA=EA=基址基址基址基址+(变址(变址(变址(变址*比例因子比例因子比例因子比例因子)+位移量位移量位移量位移量 比例因子比例因子比例因子比例因子(scale factor)3232位汇编才有位汇编才有位汇编才有位汇编才有 其值可为其值可为1,2,4或或8,386及其后继机型新增加的及其后继机型新增加的 变址变址变址变址(index)存放在变址寄存器中的内容
6、,用于访问数组的某个元素存放在变址寄存器中的内容,用于访问数组的某个元素 基址基址基址基址(base)存放在基址寄存器中的内容,用于指向数组的首地址存放在基址寄存器中的内容,用于指向数组的首地址下面我们来讨论余下的几种与存储器有关的寻址方式,下面我们来讨论余下的几种与存储器有关的寻址方式,下面我们来讨论余下的几种与存储器有关的寻址方式,下面我们来讨论余下的几种与存储器有关的寻址方式,先介绍几个概念:先介绍几个概念:先介绍几个概念:先介绍几个概念:5现代微机原理与接口技术现代微机原理与接口技术http:/http:/16/32位寻址时有效地址四种成分的组成位寻址时有效地址四种成分的组成四种成分四
7、种成分16位寻址位寻址3232位寻址位寻址位寻址位寻址位移量位移量0,8,16位位0,8,32位位基址寄存器基址寄存器BX,BP任何任何32位通用寄存器位通用寄存器(包括包括ESP)变址寄存器变址寄存器SI,DI除除ESP以外的以外的32位通用寄存器位通用寄存器比例因子比例因子 无无1,2,4,86现代微机原理与接口技术现代微机原理与接口技术http:/http:/默认段选择规则默认段选择规则访存类型访存类型 所用段及寄存器所用段及寄存器缺省选择规则缺省选择规则指令指令代码段代码段 CS用于取指用于取指堆栈堆栈堆栈段堆栈段 SSn所有的堆栈的进栈和出栈所有的堆栈的进栈和出栈n任何用任何用ESP
8、或或EBP或或BP作为基址寄存器的访存作为基址寄存器的访存目的串目的串附加数据段附加数据段 ES串处理指令的目的串串处理指令的目的串局部数据局部数据数据段数据段 DS除相对于堆栈以及串处理的除相对于堆栈以及串处理的目的串以外的所有数据访问目的串以外的所有数据访问7现代微机原理与接口技术现代微机原理与接口技术http:/http:/不允许使用段超越前缀的情况不允许使用段超越前缀的情况不允许使用段超越前缀的情况不允许使用段超越前缀的情况:(1)串操作指令的目的串必须用)串操作指令的目的串必须用ES段段(2)PUSH指令的目的和指令的目的和POP指令的源必须用指令的源必须用SS段段(3)程序的指令必
9、须存放在)程序的指令必须存放在CS段段访问非默认段数据的方法访问非默认段数据的方法段超越段超越数据的存放比较灵活,除了放在默认的数据的存放比较灵活,除了放在默认的DS段,还可以段,还可以存放在别的段,此时访问他们需要使用段超越前缀,存放在别的段,此时访问他们需要使用段超越前缀,可用的段超越前缀有可用的段超越前缀有CS:,DS:,ES:,SS:,FS:,GS:。段超越举例:段超越举例:段超越举例:段超越举例:MOV AX,10H ;DSMOV AX,10H ;DS段段段段10H10H处的一个字的数据赋给处的一个字的数据赋给处的一个字的数据赋给处的一个字的数据赋给AXAX寄存器寄存器寄存器寄存器M
10、OV AX,MOV AX,ES:ES:10H;10H;ESES段段段段10H10H处的一个字的数据赋给处的一个字的数据赋给处的一个字的数据赋给处的一个字的数据赋给AXAX寄存器寄存器寄存器寄存器8现代微机原理与接口技术现代微机原理与接口技术http:/http:/3、直接寻址、直接寻址 操作数地址的偏移量(操作数地址的偏移量(操作数地址的偏移量(操作数地址的偏移量(EAEA)在指令中)在指令中)在指令中)在指令中物理地址物理地址物理地址物理地址=指定段的段基地址指定段的段基地址指定段的段基地址指定段的段基地址16+16+偏移量偏移量偏移量偏移量(EA)(EA)系统默认,操作数在数据段系统默认,
11、操作数在数据段系统默认,操作数在数据段系统默认,操作数在数据段段基地址段基地址EA操作数操作数+指令指令存储器存储器MOV AX,2000H ;立即寻址立即寻址MOV AX,2000H ;直接寻址直接寻址9现代微机原理与接口技术现代微机原理与接口技术http:/http:/直接寻址示例直接寻址示例1 MOV AX,1000H1000H 物理地址物理地址 设设(DS)=10A0H 代码段代码段 +OP 00H 10H 数据段数据段 11A00H 30H 50H 50H 30H AX(本章中图示存储器地址从上到下递增)本章中图示存储器地址从上到下递增)低地址低地址10A00H1000H11A00H
12、10A0H1000H1000H30H50H11A00H10现代微机原理与接口技术现代微机原理与接口技术http:/http:/直接寻址示例直接寻址示例2MOV BL,ES:0100HES:0100H 物理地址物理地址 设设(ES)=3000H 30000H (DS)=2000H +0100H 30100H 4B 00 BL4B在汇编语言指令中,可以用在汇编语言指令中,可以用符号地址符号地址符号地址符号地址代替数值地址代替数值地址如:如:MOV AX,BUFFBUFF或或 MOV AX,BUFFBUFF其中其中其中其中BUFFBUFF为存放数据单元的符号地址。为存放数据单元的符号地址。为存放数据
13、单元的符号地址。为存放数据单元的符号地址。3000H0100H0100H30100H30100H4B11现代微机原理与接口技术现代微机原理与接口技术http:/http:/4、寄存器间接寻址寄存器间接寻址 操作数在存储器中,操作数地址的偏移量(操作数在存储器中,操作数地址的偏移量(操作数在存储器中,操作数地址的偏移量(操作数在存储器中,操作数地址的偏移量(EAEA)在)在)在)在寄存器中寄存器中寄存器中寄存器中基址或变址寄存器号基址或变址寄存器号基址或变址寄存器号基址或变址寄存器号EA操作数操作数+存储器存储器指令指令寄存器寄存器段基地址段基地址寄存器间接寻址示例寄存器间接寻址示例 MOV A
14、L,BXBX MOV AX,CS:CS:SISI MOV BPBP,AH 12现代微机原理与接口技术现代微机原理与接口技术http:/http:/MOV AH,BPBPMOV BX,SI SIMOV CX,SI设设(SS)=1000H,(DS)=2000H,(BP)=0B10H,(SI)=032AH 物理地址物理地址 物理地址物理地址 10000H 20000H +0B10H +032AH 40H 00H 3EH 46H40H AHAH10B10H2032AH463EH BXBX2032BH10B11H SISI032AH032AH CXCX1000H2000H0B10H032AH10B10H
15、10B10H2032AH2032AH40H3EH46032AH13现代微机原理与接口技术现代微机原理与接口技术http:/http:/5、基址寻址、基址寻址 操作数的有效地址是基址寄存器的内容加上指令中操作数的有效地址是基址寄存器的内容加上指令中操作数的有效地址是基址寄存器的内容加上指令中操作数的有效地址是基址寄存器的内容加上指令中指定的位移量指定的位移量指定的位移量指定的位移量 基址寄存器号基址寄存器号基址寄存器号基址寄存器号 位移量位移量位移量位移量地址地址+操作数操作数指指 令令基址寄存器基址寄存器段基地址段基地址存储器存储器EA可用于数组元素的访问可用于数组元素的访问可用于数组元素的访
16、问可用于数组元素的访问14现代微机原理与接口技术现代微机原理与接口技术http:/http:/基址寻址示例基址寻址示例 MOV AX,3000HBX (3000HBX (或或或或BX+3000H)BX+3000H)MOV AX,COUNTBXCOUNTBX ;COUNT;COUNT是符号地址是符号地址是符号地址是符号地址 (或(或 MOV AX,COUNT+BXCOUNT+BX)若若(DS)=3000H,(BX)=2000H,COUNT=4000H 30000H 2000H +4000H 1234H36000H 34H 12HAX3000H2000H4000H36000H36000H34H12
17、15现代微机原理与接口技术现代微机原理与接口技术http:/http:/6、变址寻址、变址寻址 变址寄存器号变址寄存器号变址寄存器号变址寄存器号 位移量位移量位移量位移量地址地址+操作数操作数指指 令令变址寄存器变址寄存器段基地址段基地址存储器存储器EA操作数的有效地址是变址寄存器的内容加上指令中指操作数的有效地址是变址寄存器的内容加上指令中指操作数的有效地址是变址寄存器的内容加上指令中指操作数的有效地址是变址寄存器的内容加上指令中指定的位移量定的位移量定的位移量定的位移量16现代微机原理与接口技术现代微机原理与接口技术http:/http:/变址寻址示例变址寻址示例 MOV CX,6020H
18、SI (6020HSI (或或或或SI+6020H)SI+6020H)MOV DX,COUNTSICOUNTSI ;COUNT是符号地址是符号地址 (或(或 MOV AX,COUNT+SICOUNT+SI)若若(DS)=3000H,(SI)=2000H,COUNT=1000H 30000H 2000H +1000H 6734H33000H 34H 67HDX3000H2000H1000H33000H33000H34H6717现代微机原理与接口技术现代微机原理与接口技术http:/http:/7、基址变址寻址、基址变址寻址1)无位移量的基址变址寻址)无位移量的基址变址寻址 操作数的有效地址是一个
19、基址寄存器和一个变址寄操作数的有效地址是一个基址寄存器和一个变址寄操作数的有效地址是一个基址寄存器和一个变址寄操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和存器的内容之和存器的内容之和存器的内容之和基址寄存器基址寄存器基址寄存器基址寄存器变址寄存器变址寄存器变址寄存器变址寄存器变址值变址值基址值基址值+操作数操作数指指 令令变址寄存器变址寄存器基址寄存器基址寄存器段基地址段基地址存储器存储器EA18现代微机原理与接口技术现代微机原理与接口技术http:/http:/无位移量基址变址寻址示例无位移量基址变址寻址示例 MOV AX,BX+DIBX+DI MOV AX,BXDIBXDI
20、若若(DS)=2100H,(BX)=0158H,(DI)=10A5H,物理地址物理地址 21000H 0158H+10A5H 221FDH 34H 12H1234HAX2100H0158H10A5H221FDH221FDH34H1219现代微机原理与接口技术现代微机原理与接口技术http:/http:/2)基址变址相对寻址)基址变址相对寻址 操作数的有效地址是一个基址寄存器的内容、操作数的有效地址是一个基址寄存器的内容、操作数的有效地址是一个基址寄存器的内容、操作数的有效地址是一个基址寄存器的内容、一个变址寄存器的内容及位移量之和一个变址寄存器的内容及位移量之和一个变址寄存器的内容及位移量之和
21、一个变址寄存器的内容及位移量之和 基址寄存器基址寄存器基址寄存器基址寄存器变址寄存器变址寄存器变址寄存器变址寄存器位移量位移量位移量位移量变址值变址值基址值基址值+操作数操作数指指 令令变址寄存器变址寄存器基址寄存器基址寄存器段基地址段基地址存储器存储器EA20现代微机原理与接口技术现代微机原理与接口技术http:/http:/基址变址相对寻址示例基址变址相对寻址示例 MOV AX,MASKBX+SIMASKBX+SI;MASKMASK是符号地址是符号地址是符号地址是符号地址 若若(DS)=3000H,(BX)=2000H,(SI)=1000H,MASK=0250H 物理地址物理地址 3000
22、0H 2000H 1000H +0250H 33250H 20H 43H 4320H AX3000H2000H1000H0250H33250H33250H20H4321现代微机原理与接口技术现代微机原理与接口技术http:/http:/8、端口寻址、端口寻址1)直接寻址()直接寻址(I/O Port Direct Addressing)直接寻址是使用一字节立即数寻址,因此直接寻址是使用一字节立即数寻址,因此直接寻址是使用一字节立即数寻址,因此直接寻址是使用一字节立即数寻址,因此I/OI/O端口的端口的端口的端口的寻址范围为寻址范围为寻址范围为寻址范围为00HFFH00HFFH,最多为,最多为,
23、最多为,最多为256256个。个。个。个。IN IN AL,20HAL,20H;从;从20H端口读入端口读入1个字节个字节OUT 60H,AXOUT 60H,AX;将;将AX中中1个字送到个字送到60H端口端口2)间接寻址()间接寻址(I/O Port Indirect Addressing)间接寻址由间接寻址由间接寻址由间接寻址由DXDX寄存器间接给出寄存器间接给出寄存器间接给出寄存器间接给出I/OI/O端口地址,为两个端口地址,为两个端口地址,为两个端口地址,为两个字节,所以最多可寻址字节,所以最多可寻址字节,所以最多可寻址字节,所以最多可寻址2 21616=64K=64K个端口地址。个端
24、口地址。个端口地址。个端口地址。MOVDX,3FCHININAL,DXAL,DX;从;从3FCH端口读入端口读入1个字节个字节22现代微机原理与接口技术现代微机原理与接口技术http:/http:/3.1.2 转移操作寻址转移操作寻址1.段内直接寻址段内直接寻址2.转向的有效地址是当前转向的有效地址是当前转向的有效地址是当前转向的有效地址是当前IP/EIPIP/EIP寄存器的内容和指令寄存器的内容和指令寄存器的内容和指令寄存器的内容和指令中指定的位移量之和。位移量在条件转移以及短转移中指定的位移量之和。位移量在条件转移以及短转移中指定的位移量之和。位移量在条件转移以及短转移中指定的位移量之和。
25、位移量在条件转移以及短转移中只有中只有中只有中只有8 8位,其它情况下为位,其它情况下为位,其它情况下为位,其它情况下为1616位。位。位。位。偏移量偏移量机器机器码码程序程序00000405PROG_S:ADD AL,05H000290 NOP0003EBFB JMP SHORT PROG_S000590 NOP23现代微机原理与接口技术现代微机原理与接口技术http:/http:/2.段内间接寻址段内间接寻址转向有效地址是一个寄存器或是一个存储单元的内转向有效地址是一个寄存器或是一个存储单元的内转向有效地址是一个寄存器或是一个存储单元的内转向有效地址是一个寄存器或是一个存储单元的内容容容容
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 80 x86 汇编语言 程序设计 16 汇编 版本
限制150内