
寻址方式与指令系统.pdf
44页Department of Computer Science, Zhejiang Normal University第三章 寻址方式与指令系统第三章 寻址方式与指令系统2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系2内容提要内容提要8086的寻址方式的寻址方式微机系统指令的机器码表示方法微机系统指令的机器码表示方法8086的指令系统的指令系统2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系3§3-3 8086的指令系统按功能可分为以下六类按功能可分为以下六类一、数据传送指令二、算术运算指令三、逻辑运算和移位指令四、串操作指令五、转移指令六、处理器控制指令一、数据传送指令二、算术运算指令三、逻辑运算和移位指令四、串操作指令五、转移指令六、处理器控制指令2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系4§3-3 8086的指令系统一、数据传送指令一、数据传送指令(14条)2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系5§3-3 8086的指令系统——数据传送指令1. 通用数据传送指令通用数据传送指令(General Purpose Data Tranfers) ((1))MOV传送指令(传送指令(Move) 指令格式:) 指令格式:MOV 目的目的,,源源 指令功能:实现指令功能:实现CPU的内部寄存器间或 寄存器与存储器间的数据传送。
的内部寄存器间或 寄存器与存储器间的数据传送例例: MOV AX, 0FF00H MOV [DI], AX MOV CX, [1000H] MOV BL, 40H MOV WORD PTR[SI], 0001H MOV AL, BL2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系6§3-3 8086的指令系统——数据传送指令 指令中至少要有一项明确说明传送的是指令中至少要有一项明确说明传送的是字节字节还是还是字字;; IP寄存器不能用作寄存器不能用作源操作数源操作数或或目的操作数目的操作数;; 立即数和立即数和CS寄存器不能用作寄存器不能用作目的操作数目的操作数;; 除了源操作数为立即数的情况外,两个操作数中除了源操作数为立即数的情况外,两个操作数中必有一个是寄 存器必有一个是寄 存器,但不能都是,但不能都是段寄存器段寄存器;即;即MOV指令不能在两个存储单元之间直接传送数据,也不能在两个段寄存器之间直接传送数据指令不能在两个存储单元之间直接传送数据,也不能在两个段寄存器之间直接传送数据1))MOV传送指令(传送指令(Move))注意:注意:2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系7§3-3 8086的指令系统——数据传送指令((1))MOV传送指令(传送指令(Move))【数据段】【数据段】数据通常存放在数据段中。
例如,某个程序的数据段:数据通常存放在数据段中 例如,某个程序的数据段: DATA SEGMENT ;数据段开始;数据段开始 AREA1 DB 14H,,3BH ;定义字节变量;定义字节变量 AREA2 DB 3 DUP(0) ;复制操作;复制操作 ARRAY DW 3100H,,01A6H ;定义字变量;定义字变量 STRING DB ‘GOOD’ DATA ENDS ;数据段结束;数据段结束汇编后,汇编后,DATA将被赋予一个具体的段地址各变 量将自偏移地址将被赋予一个具体的段地址各变 量将自偏移地址0000H开始依次存放,各符号地址 等于它们在数据段中的偏移量开始依次存放,各符号地址 等于它们在数据段中的偏移量2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系8§3-3 8086的指令系统——数据传送指令((1))MOV传送指令(传送指令(Move))【数据段】【数据段】数据通常存放在数据段中 例如,某个程序的数据段:数据通常存放在数据段中 例如,某个程序的数据段: DATA SEGMENT ;数据段开始;数据段开始 AREA1 DB 14H,,3BH ;定义字节变量;定义字节变量 AREA2 DB 3 DUP(0) ;复制操作;复制操作 ARRAY DW 3100H,,01A6H ;定义字变量;定义字变量 STRING DB ‘GOOD’ DATA ENDS ;数据段结束;数据段结束 AREA1的偏移地址为的偏移地址为0000H; AREA2的偏移地址为的偏移地址为0002H; ARRAY的偏移地址为的偏移地址为0005H; STRING的偏移地址为的偏移地址为0009H。
2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系9§3-3 8086的指令系统——数据传送指令((1))MOV传送指令(传送指令(Move))例例MOV DX,,OFFSET ARRAY 解解::ARRAY的偏移地址??的偏移地址??DXOFFSET:取后面 的符号偏移地址的值) 设::取后面 的符号偏移地址的值) 设:ARRAY的定义如右图所示 则:的定义如右图所示 则:DX = 0005H例例MOV AL,,AREA1 ;AL????AREA1中的内容中的内容14H MOV AREA2,,AL ; 0002H单元??单元??14H2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系10§3-3 8086的指令系统——数据传送指令 指令格式:指令格式:PUSH 源源 指令功能:指令功能:数据入堆栈数据入堆栈 工作过程:工作过程: SP←←SP-2;(;(SP+1,,SP)←源←源 源操作数要求:可以是源操作数要求:可以是16位通用寄存器、段寄存器、存储器中的数据字,但位通用寄存器、段寄存器、存储器中的数据字,但不能是立即数不能是立即数2))PUSH进栈指令(进栈指令(Push Word onto Stack))2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系11§3-3 8086的指令系统——数据传送指令 指令格式:指令格式:POP 目的目的 指令功能:数据指令功能:数据出堆栈出堆栈 工作过程:目的←(工作过程:目的←(SP+1,SP)SP←←SP + 2;; 目的操作数要求:可以是目的操作数要求:可以是16位通用寄存器、段寄存器或存储单元,但位通用寄存器、段寄存器或存储单元,但CS不能作目的操作数不能作目的操作数。
3))POP进栈指令(进栈指令(Pop Word Off Stack))2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系12§3-3 8086的指令系统——数据传送指令 指令格式:指令格式:XCHG 目的目的, 源源 指令功能:源操作数、目的操作数数据交换指令功能:源操作数、目的操作数数据交换 操作数要求:交换可以在寄存器之间、寄存器与存储器之间进行; 段寄存器不能作为操作数;不能直接交换两个存储单元中的内容操作数要求:交换可以在寄存器之间、寄存器与存储器之间进行; 段寄存器不能作为操作数;不能直接交换两个存储单元中的内容4))XCHG交换类指令(交换类指令(ExChange))例例设设AX=2000H,,DS=3000H,,BX=1800H,,(31A00H)=1995H 则执行指令 则执行指令XCHG AX,,[BX+200H]后,结果如何?后,结果如何? 解解:把内存中的一个字与:把内存中的一个字与AX中的内容进行交换 源操作数物理地址=中的内容进行交换 源操作数物理地址=3000××10H+1800H+200H==31A00H, 指令执行后:, 指令执行后:AX==1995H,,(31A00H)==2000H2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系13§3-3 8086的指令系统——数据传送指令 指令格式:指令格式: XLAT 转换表或:转换表或:XLAT 指令功能:使累加器指令功能:使累加器((AL))中的一个值变换为中的一个值变换为内存表格内存表格中的某 一个值,一般用来实现代码转换,即查表功能。
中的某 一个值,一般用来实现代码转换,即查表功能 XLAT指令使用步骤:指令使用步骤: – 使用之前必须先建立一个表格,表格中的内容是所需要转换的代 码;使用之前必须先建立一个表格,表格中的内容是所需要转换的代 码; –将转换表的将转换表的起始地址起始地址装入??装入?? BX寄存器;寄存器; – 欲查的某项与表头地址的欲查的某项与表头地址的位移量位移量???? AL,即表格最多包含,即表格最多包含256个 字节;个 字节; – 执行执行XLAT指令后,根据位移量从表中查到转换后的代码值??指令后,根据位移量从表中查到转换后的代码值?? AL寄存器中寄存器中5))XLAT查表类指令查表类指令(Table Lookup-Translation)2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系14§3-3 8086的指令系统——数据传送指令例例若十进制数字若十进制数字0~~9的的LED七段码对照表如表所示,试用七段码对照表如表所示,试用XLAT指令 求数字指令 求数字5的七段码值的七段码值5))XLAT查表类指令查表类指令(Table Lookup-Translation)十进制数的七段显示码表十进制数的七段显示码表2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系15§3-3 8086的指令系统——数据传送指令七段七段LED显示器的工作原理和接口电路显示器的工作原理和接口电路数字数字【【5】】2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系16§3-3 8086的指令系统——数据传送指令((5))XLAT查表类指令查表类指令(Table Lookup-Translation)程序如下:程序如下:TABLE DB 40H,,79H,,24H,,30H,,19H ;七段数码表数据;七段数码表数据 DB 12H,,02H,,78H,,00H,,18H ; 分别对应; 分别对应0~~9的七段 ; 字型码的七段 ; 字型码 …………… MOV AL,,5 ;;AL ?? 数字?? 数字5的位移量的位移量 MOV BX,,OFFSET TABLE ;;BX ?? 表格首地址?? 表格首地址 XLAT TABLE ;查表得:;查表得:AL = 12H2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系17§3-3 8086的指令系统——数据传送指令2.输入输出指令.输入输出指令(Input and Output)IN指令:指令:从数据端口输入数据或从状态端口输入状态字。
从数据端口输入数据或从状态端口输入状态字OUT指令:指令:输出数据或命令给指定的输出数据或命令给指定的I/O端口1) 直接输入输出指令格式) 直接输入输出指令格式::IN AL,,PORT ;; AL (PORT)IN AX,,PORT ;; AX (PORT+1,PORT)OUT PORT,,AL ;; (PORT) ALOUT PORT,,AX ;; (PORT+1,PORT) AX注:注:PORT为输入输出端口号,范围为为输入输出端口号,范围为0~~255(00 ~~ FFH)2010-4-5浙江师范大学 计算机系浙江师范大学 计算机系18§3-3 8086的指令系统——数据传送指令2.输入输出指令.输入输出指令(Input and Output) ((2)间接输入输出指令)间接输入输出指令 格式:格式: IN AL, DX ; AL (DX) IN AX, DX ; AX (DX+1,DX) OUT DX, AL ; (DX) AL OUT DX, AX ; (DX+1,DX) 。












