微机系统与接口:第三讲(2) 指令系统_第1页
微机系统与接口:第三讲(2) 指令系统_第2页
微机系统与接口:第三讲(2) 指令系统_第3页
微机系统与接口:第三讲(2) 指令系统_第4页
微机系统与接口:第三讲(2) 指令系统_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、算术运算(Arithmetic)指令,加法运算指令,ADD (Addition) 加法 用法:ADD dest,src; 执行 (dest)(dest)+(src) 如: ADD WORD PTRBX, 20 例: AL=7EH(01111110B) AH=5BH(01011011B) ADD AL,AH AL=D9H(11011001B) SF=1, OF=1, AF=1; CF=0,ZF=0,PF=0,加法运算指令,利用Debug观察add操作中寄存器的变化,Debug中十六进制数末尾不需要加h,加法运算指令,Debug常用命令集,加法运算指令,Debug中标志寄存器的表示,加法运算指令,

2、ADC (ADD with Carry) (dest)g(dest)+(src)+(CF) 带进位加法, 例,加法运算指令,INC (Increment by 1) (dest) g(dest)+1加一操作 例,加法运算指令,例: 将buffer为首的4个字节内存内容相加,存放在AX中,减法运算指令分类,减法运算指令,注意点 SUB、SBB、CMP为双操作数, DEC、NEG为单操作数。 SBB为带进位减法。 除DEC不影响CF标志外, 对SF、ZF、AF、PF、OF均有影响 NEG求补运算,等价于用0减去操作数。 其对标志位的影响,由0减去该操作数的过程决定,减法运算指令,SUB (普通减法

3、) 例,减法运算指令,SBB 带借位减法SBB dst, src (dst) (dst) - (src) - CF DEC 自减1 DEC oprd (oprd) (oprd) - 1 NEG (Negate) 8位/16位求补(改变符号)绝对值不变 NEG dest; (dest) 0 - (dest) 例: NEG AL NEG BX NEG BYTE PTR DI+20H,减法运算指令,CMP (Compare比较操作) (dest)-(src) 例,乘法指令,乘法:MUL、IMUL(有符号乘) 、AAM 8位乘法 MUL CL; MUL BYTE PTR BX+1 执行AL*OPRD

4、积= AX 16位乘法 MUL CX; MUL WORD PTR BX 执行AX*OPRD 积= DX(高16位)| AX(低16位,除法指令,除法:DIV、IDIV (有符号除) 、AAD 8位除法 DIV CL; DIV BYTE PTR BX+1 默认被除数: AX结果 AH=余数 AL=商 16位除法 DIV CX; DIV WORD PTR BX 默认被除数: DX(高16位)| AX(低16位) 结果 DX=余数 AX=商,AAA加法的ASCII(不压缩的BCD码)调整指令,隐含操作数AL和AH 指令操作为,加法调整,AL) (AL)+6 (AH) (AH)+1 (AF) 1 (C

5、F) (AF) (AL) (AL)(AX)=07H09H=003FH AAM ;(AH)=06H,(AL)=03H,(SF)=0,(ZF)=0,(PF)=1,除法调整,AAD 除法的ASCII调整指令,隐含操作数AL和AH,AL) (AH)*0AH+(AL) (AH) 0,执行操作,操作的实质是将AX寄存器的不压缩的BCD码转成二进制,并存放在AL中,举例: MOV AX,0703H MOV BL,02H AAD ;(AL)=49H(即十进制数73) DIV BL ;(AL)=24H(商),(AH)=01H(余数) AAM ;(AH)=03H,(AL)=06H,符号扩展指令:CBW/CWD,对

6、于无符号数,扩展字长只要在高位添上足够个数的零。 对于带符号数,扩展字长时,正数与负数的处理方法不同。正数的符号位为0,负数的符号位为1,扩展字长应分别在高位添上相应符号位。 CBW/CWD 符号扩展 指令CBW和CWD用于扩展带符号数的字长,符号扩展,CBW的演示,逻辑运算与移位(Logical 该指令重复执行MOVSB直至 CX为0 REPZ CMPSB ;该指令重复执行CMPSB直至 ZF为0 或 CX为0 REPNZ SCASW ;该指令重复执行SCASW直至 ZF不为0 或 CX为0,串操作(String Manipulation,串指令的特点 1. 源串 由DS : SI指向的单元

7、; 目的串 由ES : DI指向的单元。 2. 操作后的地址指针是增量还是减量取决于方向标志DF。 3. 串操作指令前面可以加REP,则指令将重复进行,重复次数由CX决定。 4. 若串操作指令的基本操作影响ZF (CMPS和SCAS) ,则可加重复前缀REPE或REPNE。 5. 串操作指令在助记符后面加上字母B(字节操作)或者W(字操作,格式 MOVSB 字节传送 MOVSW 字传送 MOVSB 执行操作 (ES:DI ) (DS:SI ) 字节传送 (SI ) (SI ) 1 修改源串指针 (DI) (DI ) 1 修改目的串指针其中:DF = 0 ,用 + ; DF = 1 ,用 - M

8、OVSW 执行操作 (ES:DI ) (DS:SI ) 字传送 (SI ) (SI ) 2 修改源串指针 (DI ) (DI ) 2 修改目的串指针 其中:DF = 0 ,用 + ; DF = 1 ,用,串传送,格式 LODSB 取字节 LODSW 取字 LODSB执行操作 (AL) (DS:SI ) 从源串取入AL (SI) (SI ) 1 修改源串指针 其中:DF = 0 ,用 + ; DF = 1 ,用 - LODSW 执行操作 (AX) (DS:SI ) 从源串取入AX (SI ) (SI ) 2 修改源串指针 其中:DF = 0 ,用 + ; DF = 1 ,用,串取,格式 STOS

9、B 存入字节 STOSW 存入字 STOSB 执行操作 (ES:DI ) (AL ) 将AL存入目的串 (DI) (DI ) 1 修改目的串指针其中:DF = 0 ,用 + ; DF = 1 ,用 - STOSW 执行操作 (ES:DI ) (AX ) 将AX存入目的串 (DI ) (DI ) 2 修改目的串指针 其中:DF = 0 ,用 + ; DF = 1 ,用,存入串,格式 CMPSB 字节比较 CMPSW 字比较 CMPSB执行操作 (DS:SI ) (ES:DI ) 字节比较 (SI ) (SI ) 1 修改源串指针 (DI) (DI ) 1 修改目的串指针其中:DF = 0 ,用

10、+ ; DF = 1 ,用 - CMPSW执行操作 (DS:SI ) (ES:DI ) 字比较 (SI ) (SI ) 2 修改源串指针 (DI ) (DI ) 2 修改目的串指针 其中:DF = 0 ,用 + ; DF = 1 ,用,串比较,格式 SCASB 取字节 SCASW 取字 SCASB执行操作 (AL ) (ES:DI ) 从目的串搜索字节 (DI) (DI ) 1 修改目的串指针其中:DF = 0 ,用 + ; DF = 1 ,用 - SCASW执行操作 (AX ) (ES:DI ) 从目的串搜索字 (DI ) (DI ) 2 修改目的串指针 其中:DF = 0 ,用 + ; D

11、F = 1 ,用 - 两数相减,只影响标志,不影响操作数,搜索串,范例,例 “用REP MOVS 进行数据块传送” 编程步骤如下: 设置传送方向 用CLD 使DF = 0, 地址增加方向(正向) 用STD 使 DF = 1, 地址减小方向(反向) 设置源串地址 将源串首地址(DF=0),或末地址(DF=1)放入 DS、SI中 设置目的串地址 将目的串首地址(DF=0),或末地址(DF=1)放入 ES、DI中 设置串长度 将串的长度(传送次数)放入CX中。 字节传送用 REP MOVSB 字传送 用 REP MOVSW,例 把数据段中首地址位BUFFER1的200个字节传送到附加段首地址位BUF

12、FER2的内存区中。 CLD ;设置方向标志DF0,地址增量模式 LEA SI,BUFFER1 ;(SI) 源串首址指针 LEA DI,BUFFER2 ;(DI) 目标串首址指针 MOV CX,200 ;(CX) 字符串长度 REP MOVSB ;传送200个字节 ;传送结束,范例,控制转移(Control Transfer,在8086/8088中,指令的地址固定由CS和IP两个寄存器决定,控制转移指令的分类,重点掌握: JMP, JZ, JNZ, JC, LOOP CALL, RET, INT n, IRET,无条件跳转(Unconditional Jump,JMP near_label段内

13、直接转移 IP=IP+disp(16位) disp 范围在 -3276832767之间 JMP short_label;段内直接短转移 IP=IP+disp(8位) disp 范围在 -128127之间 JMP reg16/mem16段内间接转移 JMP far_label; 段间直接转移 JMP mem32段间间接转移,条件跳转(Conditional Jump) (见书P112,Jcc short_label; 助记符中的“cc”表示跳转条件。 操作数必须是短标号,即跳转偏移必须在128127之间。 满足条件则转向目标地址去执行,否则执行Jcc的下一条指令。 例,CMP AX, BX JZ

14、 zero ; 转移条件:ZF =1 zero:MOV flag,0,条件跳转(Conditional Jump,按转移条件不同,条件转移指令可以分为四大类,以单个状态标志作为转移条件,以CX的值为0作为转移条件,条件跳转(Conditional Jump,以两个无符号数比较的结果作为转移条件,条件跳转(Conditional Jump,以两个带符号数比较的结果作为转移条件,条件跳转(Conditional Jump,例:在string字符串中查找空格字符,串长度为N,string DS:BX,循环控制 (Loopxx,使用格式: LOOPxx符号地址 执行: (CX)(CX) 1,此操作不影

15、响标志 检查转移条件,满足,转向目标地址去执行; 不满足,执行LOOPxx后一条指令 转移方式:只允许段内直接短方式,跳转范围-128127,过程调用指令 (Call a procedure,CALL 调用(过程/子程序Subroutine) RET 过程返回,主程序,调用,返回,子程序1,子程序2,调用,返回,断点1,断点2,低地址,高地址,堆栈段,SP),先推入,后推入,先弹出,后弹出,过程调用指令 (Call a procedure,CALL near_proc;段内直接调用 (SP)(SP)-2, (SP)+1,(SP)(IP); (IP)(IP)+ disp CALL reg16/m

16、em16;段内间接调用 (SP)(SP)-2, (SP)+1,(SP)(IP); (IP)reg16/mem16 CALL far_proc; 段间直接调用 (SP)(SP)-2, (SP)+1,(SP)(CS) (CS) SEG far_proc (SP)(SP)-2, (SP)+1,(SP)(IP) (IP) OFFSET far_proc,过程调用指令 (Call a procedure,CALL MEM32;段间间接调用 (SP)(SP)-2,(SP)+1,(SP)(CS) (CS)(mem32+2) (SP)(SP)-2,(SP)+1,(SP)(IP); (IP)(mem32) 例:

17、 CALL 2000H CALL BX CALL NEAR PTR ES:SI CALL FAR PTR2000H,过程返回指令 ( Return From Call,中断指令 Interrupt,中断(Interrupt) 有时当系统运行或程序运行期间遇到某些特殊情况, 需要计算机自动执行一组专门的例行程序来进行处理。 中断子程序 一种特殊的子程序。以类型号N来区分,共有256个类型号( 0255,中断种类 中断分为内部(软)中断和外部(硬)中断两种。 内部中断如除法运算中除数为0、中断指令引起的中断。 外部中断处理I/O设备与CPU之间的通信,中断指令 Interrupt,中断向量表指存放

18、 256 个中断向量的内存区域 每个中断向量占4个单元 256 个中断向量占1K个单元 (4 256 = 1024 = 1K)中断向量表地址为 0:0 0:03FFH,即低端1K内存 中断向量类型N的中断向量固定存放在4个内存单元中,如下图,0:N4,0:N4 2,其中:前两个单元存放偏移地址 后两个单元 存放段地址,中断指令 Interrupt,MPU控制 (Processor Control,标志位操作,MPU控制 (Processor Control,NOP No Operation 空操作 指令不执行任何操作, 机器码占一个字节单元。 HLT(HALT)CPU暂停 用于等待外部中断,中断处理结束后

温馨提示

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

评论

0/150

提交评论