计算机原理:第二章微型机指令系统1of4

上传人:hs****ma 文档编号:568783231 上传时间:2024-07-26 格式:PPT 页数:51 大小:844.50KB
返回 下载 相关 举报
计算机原理:第二章微型机指令系统1of4_第1页
第1页 / 共51页
计算机原理:第二章微型机指令系统1of4_第2页
第2页 / 共51页
计算机原理:第二章微型机指令系统1of4_第3页
第3页 / 共51页
计算机原理:第二章微型机指令系统1of4_第4页
第4页 / 共51页
计算机原理:第二章微型机指令系统1of4_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《计算机原理:第二章微型机指令系统1of4》由会员分享,可在线阅读,更多相关《计算机原理:第二章微型机指令系统1of4(51页珍藏版)》请在金锄头文库上搜索。

1、 1第二章 微型机指令系统 (地址a) 1011 0000B (a+ 1) 0011 0001B MOV AL, 31H; AL31H如果 CS:IP 指向物理地址 a, 即 CS:IP = a则存储器则存储器a单元及单元及a+1单元的内容即为指令:单元的内容即为指令: 2指令形式:第二章 微型机指令系统汇编语言: 机器语言: 汇编 指令内容: 做什么 对谁做两种形式一一对应,可互相转换。指令:程序员指挥计算机工作的最小单位指令系统:一种CPU全部指令的集合 3 2.1 2.1 寻址方式寻址方式寻址:寻找操作数,以传送指令为例说明寻址:寻找操作数,以传送指令为例说明操作数在指令中操作数在指令中

2、-立即寻址立即寻址例:MOV AL , 31H ; AL31H(地址a) 操作码: 1011 0000B (a+ 1) 0011 0001B 立即数31H 4指令操作码指令操作码例:MOV AL , 31H ; AL31H 操作码: 1011 0000 8 位 立即数 0011 0001 AL传给R 立即数31H 516位传送MOV AX , 3124H ; AL 24H , ; AH31H操作码: 1011 1000B 16位传给R 0010 0100B AX 0011 0001B多字节数在内存中存放:低字节在前,高字节在后3124H 6P45 P45 图图2.1 2.1 立即寻址方式立即寻

3、址方式(a) MOV CL, 05 (b) MOV AX, 3100H(a) MOV CL, 05 (b) MOV AX, 3100H 7二.二.操作数在寄存器中操作数在寄存器中操作数在寄存器中操作数在寄存器中-寄存器寻址寄存器寻址寄存器寻址寄存器寻址指令中出现寄存器名指令中出现寄存器名指令中出现寄存器名指令中出现寄存器名例:MOV AH , AL ; AHAL 机器码: 1000 1000B 1100 0100B源寄存器AL目标寄存器AHCPU内部执行,不需要执行总线周期 8P45 P45 图图2.2 2.2 寄存器寻址方式寄存器寻址方式MOV SS, AXMOV SS, AX- 91. 直

4、接寻址EA在指令中MOV AX , 3100H ; AL DS : 3100H ; AH DS : 3100H +1 方括号中为有效地址 EA三三.操作数在内存中操作数在内存中-寻找内存地址 段 基 址 : 偏移地址 多数隐含 DS :有效地址 (EA)寻址方式寻址方式 10P45 P45 图图2.3 2.3 直接寻址方式直接寻址方式MOV AXMOV AX, 31003100 ( (设设 DS=6000)DS=6000) 11操作数在内存中操作数在内存中EA在指令中 直接寻址 (见前述)EA在寄存器中(变址寄存器SI,DI及基址寄存器BX,BP) 寄存器间接寻址EA为变址寄存器SI / DI

5、 加地址位移量disp 变址寻址EA为基址寄存器BX / BP,加地址位移量disp 基址寻址EA为一个变址寄存器加一个基址寄存器,再加位移量 基址-变址寻址 12操作数在内存中操作数在内存中寄存器间接寻址- EA在寄存器中,指令中看到寄存器名例:MOV BX , DI ; BL DS : DI ; BH DS : D I + 1 允许作间址用的寄存器有 SI,DI,BX,BP用SI,DI,BX时段基址隐含在DS中,但用BP时段基址隐含在SS中 13P46 P46 图图2.4 2.4 寄存器间接寻址方式寄存器间接寻址方式(a) MOV BX(a) MOV BX, DI (b) MOV BP,D

6、I (b) MOV BP, AXAX 143 3. 变址寻址EA为变址寄存器SI / DI 加地址位移量disp例:MOV BX , SI + 1002H ; 或写成 1002H SI 两字节: BL DS : SI + 1002H BH DS : SI + 1002H +1 15P47 图2.5 变址寻址方式MOV BXMOV BX, SI+1003HSI+1003H 164. 基址寻址EA为基址寄存器BX / BP,加地址位移量disp例:MOV AX , 1002H BX ; AX DS : BX+ 1002H MOV AX , 40H BP ; AX SS : BP+ 40H 两条都是

7、16位传送。 17隐含段寄存器隐含段寄存器基址寻址中用BX时段基址和变址寻址一样隐含在DS中,但基址寻址用BP时段基址隐含在SS中 18P48 图2.6 基址寻址方式MOV 2500HBP, AXMOV 2500HBP, AX 195. 基址-变址寻址EA为一个变址寄存器加一个基址寄存器,再加位移量 例:MOV AX , 1004H BX SI ; AX DS : BX+ SI+ 1004H 不能同时用两个变址(SI/DI),或同时用两个基址寄存器(BX/BP) 20P49 图2.7 基址-变址寻址方式MOV AX, 64HBXSIMOV AX, 64HBXSI 21隐含段基址及段超越隐含段基

8、址及段超越段基址一般隐含在DS中,但用BP时段基址隐含在SS中指令中也可以给出段超越信息 Ex. MOV ES:DI, AX对于给出段超越的指令汇编后的机器码中,在基本指令的操作码字节前面有一个如下所示的段超越前缀字节: 7 6 5 4 3 2 1 0 0 0 1 sreg 1 1 0 sreg: 00 01 10 11 ES CS SS DS 22隐含及允许超越的段寄存器 (P51P51表表2.32.3)3. 串操作指令(MOVS、CMPS、SCAS、STOS)的目标数据串 ES:DI一、不允许超越的情况:1.取指令 CS:IP2. 堆栈操作 PUSH的目标操作数及POP的源操作数 SS:S

9、P 23隐含及允许超越的段寄存器 (P51P51表表2.32.3)用BP作为基址寄存器 SS 允许超越为SS外的另三个段寄存器中的任一个二、允许超越但隐含段寄存器不为DS的情况: 24隐含及允许超越的段寄存器 (P51P51表表2.32.3)允许超越为DS外的另三个段寄存器中的任一个三、允许超越且隐含段寄存器为DS的情况: 25MOV dest, src ; 8位/16位寄存器寄存器立即数 或寄存器或内存或内存一一. 数据传送指令数据传送指令1.MOV 一般传送 2.2 8088 2.2 8088指令系统指令系统 26交换指令XCHG 源和目标数据互换,8 / 16b ex. XCHG AX,

10、 SI ; 源操作数与目标操作数均可以是寄存器或存储器, ; 但不能两者同时为存储器一条MOV指令不能:内存 内存段寄存器 立即数段寄存器 段寄存器 27查表转换指令XLAT 用序号到表中查内容 (AL) (BX)+(AL)),8b (寄存器间接寻址)预置表首地址入 BX, 序号入 ALMOV BX, OFFSET Hex_table ; 置表首地址(16位立即数)MOV AL, 0AH ; 序号入ALXLAT Hex_table ; 取表值 ; 得 (AL) = 41H内存变量内存变量- 282.堆栈操作指令堆栈操作指令(PUSH, POP)堆栈:用于暂存数据的一段内存 FILO:数据先进后

11、出 栈顶:最后压入 / 即将弹出的单元地址为 SS :SP程序开始前设置SS :SP程序运行中堆栈操作会改变堆栈操作会改变SPSP: : 压入(PUSH)堆栈时SP先减2(2Byte) 弹出(POP)堆栈后SP加2 29 PUSH AX ; 压入堆栈(目标地址隐含)POP AX ; 弹出堆栈 (源地址隐含)先压入的后弹出,后压入的先弹出,在一个用户程序中,PUSH和POP一般成对使用,以保证SP复原 30存储器存储器SP初始指向栈底。压入时先SP-2,后存数- (SS)*10H 物理地址 物理地址 SS:SP 31P57P57图图2.9 PUSH AX 2.9 PUSH AX 指令执行情况示意

12、图指令执行情况示意图(a) PUSH AX (a) PUSH AX 前前 (b) PUSH AX (b) PUSH AX 后后 32P57P57图图2.10 POP BX 2.10 POP BX 指令执行情况示意图指令执行情况示意图(a) POP BX (a) POP BX 前前 (b) POP BX (b) POP BX 后后+ + 33 3.IN / OUT 输入输出 (用于外设端口接受发送数据)例: IN AL, 60H ; AL Port60H , OUT 62H, AL ; Port62H AL IN AX, DX ; 间址输入,且输入2字节 ; AL DX , AH DX+1MOV

13、 DX, 200H ;16位I / O地址OUT DX, AL ; 用DX作间址输出 OUT 62H, AX ; 输出2字节 ; Port62H AL, Port63H AH 34引脚信号P22 图1.128088引脚 35内存变量 与 伪指令 OFFSETMOV BX, OFFSET Hex_table ; 置表首地址(16位立即数)MOV AL, 0AH ; 序号入ALXLATB ; 取表值, ;即得 (AL) = 41H内存变量内存变量-则则 汇编语言中汇编语言中 OFFSET Hex_table 经汇编得到一个具体数值,经汇编得到一个具体数值, 即,即,Hex_table 的偏移地址的

14、偏移地址 36 LEA 装入有效地址例:LEA BX , BUFFER ;BUFFER 是内存变量 ;BX BUFFER的偏移地址4.目标地址传送注意:注意:MOV BX, BUFFER ; BX (BUFFER) ; 即,BL (BUFFER), BH (BUFFER+1) ; BUFFER 单元中的内容存入BX,寻址方式为直接寻址 LEA BX , BUFFER ; 寻址方式为立即寻址 ; 等价于 MOV BX, OFFSET BUFFER即,即,MOV BX, BUFFER 等价于:等价于:MOV BX, ? ; ? = OFFSET BUFFER 37目标地址传送LEA AX , BE

15、TA BP DI ; AX (BP)+(DI)+BETA ; BETA 为位移量注意:MOV AX, BETABPDI ; 为 AX (SS:(BP)+(DI)+BETA) ;为基址-变址寻址 38目标地址传送 LDS 传送内存四单元内容作偏移地址和段基址例:LDS SI , 10H ; SI (DS:11H),(DS:10H ); DS (DS: 13H ),(DS:12H )32位源操作数只能是内存操作数DS可换成ES (即有 LES) ,SI可换成其他通用寄存器 39二二二二. . . . 算术运算指令算术运算指令算术运算指令算术运算指令1.加法指令2. 减法指令3. 乘法指令4. 除法

16、指令算术运算:加减乘除,8位/16位运算类指令和标志寄存器关系密切 401.1.加法指令加法指令 ADD dest, src ; 8位/16位 ( dest) (dest) + (src) ADC dest , src ;带进位相加, 用于更多字节的加法 ( dest) (dest) + (src)+(CF) INC dest ;增一计数, 影响大多数标志位,但不影响进位标志CF ( dest) (dest) + 1 41十进制运算十进制数以二进制编码表示时,有: 非压缩BCD码 (如 34D = 0000001100000100 (BCD) 压缩BCD码 (如 12D = 00010010

17、(BCD)如假设: 计算机内部的算术运算只(设计成)针对操作数为二进制数的运算则让计算机完成十进制(BCD码)最简单的办法则有: 十进制(BCD码) 转换成二进制 二进制运算 结果转换成十进制(BCD码)但对加法的每一位非压缩BCD码、每2位压缩BCD码,可省去由十进制(BCD码)转换成二进制这一步骤,且将其当作二进制运算后的结果可以低成本地转换成十进制(BCD码) 42 加法的BCD调整用二进制加法器进行BCD加,结果按BCD理解 有时正确: 小于等于9并且没有进位; 有时错误: 即该进位没有产生进位,或有进位 但为满16进位。对于错误,可按十进制规律调整正确。对此,设计一条指令:判断相加结

18、果是否正确,若不正确调整成正确。对非压缩BCD码调整的调整指令为:AAA 该指令不带参数,其隐含的源操作数和目标操作数均为AL 43例: 7 + 5 = 12DBCD码: 0111 +) 0101 1100 不是BCD码 +)0110 加6 (等价减0AH) 0001 0010 = (AL)调整后: (AH) (AH)+1, (CF) (AF) 1 0000 0010 = (AL)AAA 的调整方法(对不压缩BCD码): 如果 (AL&0FH)9 或 (AF)=1 则 (AL) (AL)+6, (AH) (AH)+1, (CF) (AF) 1 (AL) (AL)&0FH)44AAA 不压缩BC

19、D码的加法调整 不压缩BCD码作ADD/ADC后结果在AL中,经AAA调整后得正确BCD (一位十进制数) ,进位到AH和CF。仅用于对AL的8位加法AAA 指令AL的高4位置0,仅保留低4位。所以可直接用于ASCII码数调整。 45P67P67例例2.32.3 计算计算 4609 + 3875 = ?4609 + 3875 = ? P68图2.17 数据存放情况示意图ASCII码非压缩BCD码- MOV AL, SI- ADC AL, BX- AAA- MOV DI, AL图2.18 流程图 46 EX. 9 + 5 = 39H + 35H = 6EH 调整前 (AL) = 6EH则调整后(

20、即执行 AAA 后), 有 (AL) =04H (AH) = 01H (CF)=(AF)=1 47DAA 压缩BCD码的加法调整 目标:压缩BCD码作ADD/ADC后结果在AL中,经DAA调整后得正确BCD(两位十进制数),进位到CF。 方法:AH内容保持不变,而在调整上, 个位上,当 (AF)=1或当9时 则加6; 十位上,当9(即(AL)大于9FH)或 (CF)=1 则加60H及置CF为1。 48例: 71D + 52D = 123DBCD码: 01110001 +) 01010010 11000011 不是BCD码 +)01100000 加60H (十位上调整) 00100011 = (

21、AL)调整后: (CF) 1 0010 0011 = (AL)DAA 的调整方法: 如果 (AL&0FH)9 或 (AF)=1 则 (AL) (AL)+6, (AF) 1 如果 (AL)9FH 或 (CF)=1 则 (AL) (AL)+60H, (CF) 1 49 相对于不压缩的BCD码加法的一位一位地进行,压缩的BCD码加法可以两位两位地进行。EX. 调整前 (AL)=C1H, (AF)=1 则调整后(即执行 DAA 后), 有 (AL) =27H, (CF)=1对个位,因(AF)=1则加6得7,十位上因大于9故加60H得十位上的2,且有进位。EX. 调整前 (AL)=1FH, (AF)=0

22、 则调整后(即执行 DAA 后), 有 (AL) =25H, (CF)=0对个位,因F9则加6,则个位上得5,十位上由原1变为2,且(AF)=1 502.2.减法指令SUB dest , src ; 减SBB dest , src ; 带借位减DEC dest ; 减1AAS ;不压缩BCD码的减法调整DAS ;压缩BCD码的减法调整 减法有一系列和加法对应的指令 51特殊的减法指令 NEG dest ; dest 0 dest (取补运算)若原数x为负,则其补码NEG后得其绝对值(x)。 若原数x为正,则NEG后得其相反数(-x)的补码。 CMP dest , src ; dest src 比较指令-做减法,结果不回送但影响标志。NEG 是对目标数(不管正负)取反加1,不能直接等于求带符号数的补码(注意补码和求补运算的区别)。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号