第3章 80x86寻址方式与指令系统
- 格式:ppt
- 大小:4.06 MB
- 文档页数:97
80x86寻址方式和指令系统第三章 80x86寻址方式和指令系统3.1 80x86 寻址方式3.1.1数据寻址方式通常指令分为操作码和操作数两部分,表示指令中操作数所在的方法称数据寻址方式。
一、立即寻址操作数包含在指令中,作为指令的一部分,存放在代码段中。
操作数(又称立即数)存放形式为,数据高位存放在地址高位存储单元,数据低位存放在地址低位存储单元。
例3.1·MODEL tiny;选择单个段模式地址·586;586实方式CS:EA 机器码·CODE;代码段开始·STARTUP;程序开始1D24:0100 B83412 MOV AX,1234H ;AX←1234H1D24:0103 66BB00000000 MOV EBX,0;EBX←01D24:0109 B155 MOV CL,55H;CL←55H·EXIT;返回DOSEND;文件结束例3.1中指令MOV AX,1234H,其源操作数为立即数1234H,目的操作数为寄存器AX。
存放该指令的地址为1D24:0100,执行该指令,从代码段取出立即数1234H送寄存器AX中。
图3.1为立即寻址过程示意图。
../../../flash/t3.1.swf图3.1 立即寻址过程示意图二、寄存器寻址操作数在寄存器中,操作数可以是8位、16位或32位通用寄存器、16位段寄存器。
例3.2·MODEL TINY·586·CODE地址机器码·STARTUP1D24:0100 8BC3 MOV AX,BX;AX←BX1D24:0102 8ACA MOV CL,DL;CL←DL1D24:0104 668BF7 MOV ESI,EDI;ESI←EDI·EXITEND上例中指令MOV AX,BX,其源操作数为BX,目的操作数为AX。
存放该指令的地址为1D24:0100,执行该指令,将BX内容复制到AX中。
第三章80x86的寻址方式与指令系统3.1 指令系统概述3.2 80x86的寻址方式3.3 80x86的指令系统3.1 指令系统概述计算机的指令系统是计算机指令的集合,是计算机硬件的语言系统,程序员通过计算机指令使用计算机的硬件,按指令系统提供的指令有序地组成程序,完成特定的功能。
指令包括操作码和操作数两大部分操作码目的操作数(地址),源操作数(地址)如:MOV AX, 012FDH3.1用符号化的汇编语言指令编写的程序输入计算机后,由“汇编程序”把它翻译成二进制机器语言形式,才能在机器上执行。
机器语言指令格式如下:OP MOD DISP(低)DISP(高)DATA(低)DATA(高)OP代表操作码,MOD表示寻址方式,DISP代表位移量,DATA代表数据。
3.1OP 字段的具体信息:OP d/swd/s 位使用在双操作数指令中,因为80x86/88规定双操作数指令的两个操作数必须有一个操作数放在寄存器中:d 位指定所用寄存器用于目的操作数(d=1)还是源操作数(d=0);对于指令中有立即数,s=1表示把8位立即数扩展为16位。
w 位用于表示指令对字(w=1)还是字节(w=0)操作。
OP 字段是指令的第一个字节,8位不够时,还可占用第二个字节的3位,除指定操作功能外,还包含操作对象的特征信息。
MOD字段表示指令寻址方式,占1个字节。
MOD字段的具体信息:MOD REG R/MMOD占2位,用于区分寄存器寻址和存储器寻址,以及使用多少字节的偏移量。
00=存储器寻址方式,无偏移量;01=存储器寻址方式,使用1个字节偏移量(-128≤DISP≤127);10=存储器寻址方式,使用2个字节偏移量(0≤DISP≤65535);11=寄存器寻址方式,R/M表示寄存器,并与OP字段的w位一起决定寄存器是8位还是16位。
REG用于选择寄存器,并与OP字段的w位一起决定寄存器是8位还是16位。
MOD中寄存器的选择:REG或MOD=11的R/M w=0w=1000AL AX001CL CX010DL DX011BL BX100AH SP101CH BP110DH SI111BH DI3.1 R/M对有效地址形成的规定MOD R/M 00011011默认段寄存器w=0w=1000(BX)+(SI)(BX)+(SI)+DISP8(BX)+(SI)+DISP16AL AX DS001(BX)+(DI)(BX)+(DI)+DISP8(BX)+(DI)+DISP16CL CX DS010(BX)+(SI)(BX)+(SI)+DISP8(BX)+(SI)+DISP16DL DX SS011(BX)+(DI)(BX)+(DI)+DISP8(BX)+(DI)+DISP16BL BX SS100(SI)(SI)+DISP8(SI)+DISP16AH SP DS101(DI)(DI)+DISP8(DI)+DISP16CH BP DS110直接地址(SP)+DISP8(SP)+DISP16DH SI SS111(BX)(BX)+DISP8(BX)+DISP16BH DI DS3.1默认段寄存器是没有段跨越前缀时隐含的段寄存器,但如果在指令前指定了段跨越前缀,则使用指定段寄存器。