第二章微型机指令系统1of4_第1页
第二章微型机指令系统1of4_第2页
第二章微型机指令系统1of4_第3页
第二章微型机指令系统1of4_第4页
第二章微型机指令系统1of4_第5页
已阅读5页,还剩43页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 1汇编语言: 机器语言: 汇编 指令内容: 做什么 对谁做两种形式一一对应,可互相转换。指令:程序员指挥计算机工作的最小单位指令系统:一种CPU全部指令的集合 2操作数在指令中操作数在指令中-立即寻址立即寻址例:MOV AL , 31H ; AL31H(地址a) 操作码: 1011 0000B (a+ 1) 0011 0001B 立即数31H 3例:MOV AL , 31H ; AL31H 操作码: 1011 0000 8 位 立即数 0011 0001 AL传给R 立即数31H 4MOV AX , 3124H ; AL 24H , ; AH31H操作码: 1011 1000B 16位传给R

2、 0010 0100B AX 0011 0001B多字节数在内存中存放:低字节在前,高字节在后3124H 5 6例:MOV AH , AL ; AHAL 机器码: 1000 1000B 1100 0100B源寄存器AL目标寄存器AHCPU内部执行,不需要执行总线周期 7 81. 直接寻址EA在指令中MOV AX , 3100H ; AL DS : 3100H ; AH DS : 3100H +1 方括号中为有效地址 EA操作数在内存中操作数在内存中-寻找内存地址 段 基 址 : 偏移地址 多数隐含 DS :有效地址 (EA)寻址方式寻址方式 9 10EA在指令中 直接寻址 (见前述)EA在寄存

3、器中(变址寄存器SI,DI及基址寄存器BX,BP) 寄存器间接寻址EA为变址寄存器SI / DI 加地址位移量disp 变址寻址EA为基址寄存器BX / BP,加地址位移量disp 基址寻址EA为一个变址寄存器加一个基址寄存器,再加位移量 基址-变址寻址 11寄存器间接寻址- EA在寄存器中,指令中看到寄存器名例:MOV BX , DI ; BL DS : DI ; BH DS : D I + 1 允许作间址用的寄存器有 SI,DI,BX,BP用SI,DI,BX时段基址隐含在DS中,但用BP时段基址隐含在SS中 12 133 3. 变址寻址EA为变址寄存器SI / DI 加地址位移量disp例

4、:MOV BX , SI + 1002H ; 或写成 1002H SI 两字节: BL DS : SI + 1002H BH DS : SI + 1002H +1 14 15EA为基址寄存器BX / BP,加地址位移量disp例:MOV AX , 1002H BX ; AX DS : BX+ 1002H MOV AX , 40H BP ; AX SS : BP+ 40H 两条都是16位传送。 16基址寻址中用BX时段基址和变址寻址一样隐含在DS中,但基址寻址用BP时段基址隐含在SS中 17 18EA为一个变址寄存器加一个基址寄存器,再加位移量 例:MOV AX , 1004H BX SI ;

5、AX DS : BX+ SI+ 1004H 不能同时用两个变址(SI/DI),或同时用两个基址寄存器(BX/BP) 19 20段基址一般隐含在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 213. 串操作指令(MOVS、CMPS、SCAS、STOS)的目标数据串 ES:DI一、不允许超越的情况:取指令 CS:IP2. 堆栈

6、操作 PUSH的目标操作数及POP的源操作数 SS:SP 22用BP作为基址寄存器 SS 允许超越为SS外的另三个段寄存器中的任一个二、允许超越但隐含段寄存器不为DS的情况: 23允许超越为DS外的另三个段寄存器中的任一个三、允许超越且隐含段寄存器为DS的情况: 24MOV dest, src ; 8位/16位寄存器寄存器立即数 或寄存器或内存或内存lMOV 一般传送 25交换指令XCHG 源和目标数据互换,8 / 16b ex. XCHG AX, SI ; 源操作数与目标操作数均可以是寄存器或存储器, ; 但不能两者同时为存储器一条MOV指令不能:内存 内存段寄存器 立即数段寄存器 段寄存器

7、 26查表转换指令XLAT 用序号到表中查内容 (AL) (BX)+(AL)),8b (寄存器间接寻址)预置表首地址入 BX, 序号入 ALMOV BX, OFFSET Hex_table ; 置表首地址(16位立即数)MOV AL, 0AH ; 序号入ALXLAT Hex_table ; 取表值 ; 得 (AL) = 41H内存变量内存变量 27 28 PUSH AX ; 压入堆栈(目标地址隐含)POP AX ; 弹出堆栈 (源地址隐含)先压入的后弹出,后压入的先弹出,在一个用户程序中,PUSH和POP一般成对使用,以保证SP复原 29SP初始指向栈底。压入时先SP-2,后存数00000SS

8、SP堆栈段 FFFFFH第一次压入此处 30 31lIN / OUT 输入输出 (用于外设端口接受发送数据)例: IN AL, 60H ; AL Port60H , OUT 62H, AL ; Port62H AL IN AX, DX ; 间址输入,且输入2字节 ; AL DX , AH DX+1MOV DX, 200H ;16位I / O地址OUT DX, AL ; 用DX作间址输出 OUT 62H, AX ; 输出2字节 ; Port62H AL, Port63H AH 32P22 图1.128088引脚 33 LEA 装入有效地址例:LEA BX , BUFFER ;BUFFER 是内存

9、变量 ;BX BUFFER的偏移地址4.目标地址传送 注意:MOV BX, BUFFER ; BX (BUFFER) ; 即将BUFFER 单元中的内容存入BX ; 寻址方式为直接寻址 MOV BX, ?LEA BX , BUFFER ; 寻址方式为立即寻址 ; 等价于 MOV BX, ? 34LEA AX , BETA BP DI ; AX (BP)+(DI)+BETA注意:MOV AX, BETABPDI ; 为 AX (SS:(BP)+(DI)+BETA) 35 LDS 传送内存四单元内容作偏移地址和段基址例:LDS SI , 10H ; SI (DS:11H),(DS:10H )DS

10、(DS: 13H ),(DS:12H )32位源操作数只能是内存操作数DS可换成ES (即有 LES) ,SI可换成其他通用寄存器 36l加法指令2. 减法指令3. 乘法指令4. 除法指令 371. 1. 加法指令加法指令 ADD dest, src ; 8位/16位 ( dest) (dest) + (src) ADC dest , src ;带进位相加, 用于更多字节的加法 ( dest) (dest) + (src)+(CF) INC dest ;增一计数, 影响大多数标志位,但不影响进位标志CF ( dest) (dest) + 1 38十进制数以二进制编码表示时,有: 非压缩BCD码

11、 (如 34D = 0000001100000100 (BCD) 压缩BCD码 (如 12D = 00010010 (BCD)如假设: 计算机内部的算术运算只(设计成)针对操作数为二进制数的运算则让计算机完成十进制(BCD码)最简单的办法则有: 十进制(BCD码) 转换成二进制 二进制运算 结果转换成十进制(BCD码)但对加法的每一位非压缩BCD码、每2位压缩BCD码,可省去由十进制(BCD码)转换成二进制这一步骤,且将其当作二进制运算后的结果可以低成本地转换成十进制(BCD码) 39 加法的BCD调整用二进制加法器进行BCD加,结果按BCD理解 有时正确: 小于等于9并且没有进位; 有时错误

12、: 即该进位没有产生进位,或有进位 但为满16进位。对于错误,可按十进制规律调整正确。对此,设计一条指令:判断相加结果是否正确,若不正确调整成正确。 40例: 7 + 5 = 12DBCD码: 0111 +) 0101 1100 不是BCD码 +)0110 加6 (等价减0AH) 0001 0010 = (AL)调整后: (AH) (AH)+1, (CF) (AF) 1 0000 0010 = (AL)AAA 的调整方法: 如果 (AL&0FH)9 或 (AF)=1 则 (AL) (AL)+6, (AH) (AH)+1, (CF) (AF) 1 (AL) (AL)&0FH)否则

13、 (AL) (AL)&0FH)41AAA 不压缩BCD码的加法调整 不压缩BCD码作ADD/ADC后结果在AL中,经AAA调整后得正确BCD (一位十进制数) ,进位到AH和CF。仅用于对AL的8位加法AAA 指令AL的高4位置0,仅保留低4位。所以可直接用于ASCII码数调整。 42 P68图2.17 数据存放情况示意图 图2.18 流程图ASCII码非压缩BCD码 43EX. 9 + 5 = 39H + 35H = 3EH 调整前 (AL) = 3EH则调整后(即执行 AAA 后), 有 (AL) =04H (AH) = 01H (CF)=(AF)=1 44DAA 压缩BCD码的加

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

15、=1 则 (AL) (AL)+6, (AF) 1 如果 (AL)9FH 或 (CF)=1 则 (AL) (AL)+60H, (CF) 1 46相对于不压缩的BCD码加法的一位一位地进行,压缩的BCD码加法可以两位两位地进行。EX. 调整前 (AL)=C1H, (AF)=1 则调整后(即执行 DAA 后), 有 (AL) =27H, (CF)=1对个位,因(AF)=1则加6得7,十位上因大于9故加60H得十位上的2,且有进位。EX. 调整前 (AL)=1FH, (AF)=0 则调整后(即执行 DAA 后), 有 (AL) =25H, (CF)=0对个位,因F9则加6,则个位上得5,十位上由原1变为2,且(AF)=1 472. 2.SUB dest , src ; 减SBB dest , src ; 带

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论