MIS硬件原理指令.doc_第1页
MIS硬件原理指令.doc_第2页
MIS硬件原理指令.doc_第3页
MIS硬件原理指令.doc_第4页
MIS硬件原理指令.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

一、指令与指令系统(一)指令(Instruction) 指令是计算机执行某种操作命令:内容包括做什么操作,操作数的来源,结果的存放,以及下一条指令的位置等等。 1、传送类; 2、加工处理类:算术运算、逻辑运算、移位循环; 3、控制类:转移、调用、中断等; 4、串操作类;(二)指令系统:所有指令的集合 8086 CPU 包含133条指令。(三 )程序:一些指令的有机结合,用于完成某种目的。8086指令系统 8086指令系统操作数符号表示 DST: 目的操作数 SRC: 源操作数 TARGET: 循环、转移和调用指令操作数 reg: 寄存器操作数,字节或字 reg8: 寄存器操作数,字节 reg16: 寄存器操作数,字 mem: 存储器操作数,字节或字 mem8: 字节型存储器操作数 mem16: 字型存储器操作数 mem32: 双字型存储器操作数acc: 累加器AL或AX操作数符号表示seg_reg:段寄存器 imm:立即操作数,字节或字 imm8:8位立即操作数 imm16:16位立即操作数 short_label:短标号(8位偏移量) near_label:近标号(16位地址或偏移) far_label:远标号(32位地址)数据传送指令(一)通用数据传送指令1、MOV DST,SRC;(DST) (SRC), 不影响标志位。 具体指令: mov mem, acc mov acc, mem mov reg, reg mov reg, mem mov mem, reg mov reg, imm mov mem, imm mov seg_reg,reg16 ;CS除外mov seg_reg,mem16 ;CS除外mov reg16,seg_regmov mem16,seg_reg例 合法指令MOV AX,SI ; (AX) (SI)MOV AL,SI ; (AL) (SI)MOV DS,AX ; (DS) (AX)MOV AX,DS; (AX) (DS)MOV SI,2000H; (SI) 2000HMOV SI,20H; (SI) 20HMOV SI,2000H ; (SI) (2000H)MOV SI,SI+6 ; (SI) (SI)+6)MOV AX,AX ; (AX) (AX) 非法指令: 存储器之间,立即数至段寄存器,段寄存器之间的传送;操作数类型不匹配,字对字节传送例MOV SI,2000H MOV CS,BX MOV DS, 2000H2、堆栈及堆栈操作(1)、堆栈 堆栈是一种按先进后出(FILO)原则存取的存储器,它由堆栈指针寄存器SS:SP和RAM中的一部分组成,主要用于保护现场和恢复现场。 SP的内容总是指向栈顶,即最后推入信息所在单元。(2)进栈指令 PUSH SRC ;(SP) (SP)-2, (SP)+1,(SP) (SRC) 具体指令: PUSH reg16 PUSH seg_reg PUSH mem16(3)出栈指令POP DST ;(DST) (SP)+1, (SP), (SP)(SP)+2) 具体指令: POP reg16 POP seg_reg POP mem163、交换指令 XCHG DST,SRC ;(DST)(SRC) 具体指令: XCHG reg , mem/ reg XCHG reg, acc 例: XCHG AX,BX ;(AX)(BX) XCHG AL,BL ;(AL)(BL)(二)累加器专用传送指令 1、输入指令IN AL,PORT;(AL) (PORT)IN AX,PORT;(AX) (PORT) IN AL,DX;(AL) (DX)IN AX,DX;(AX) (DX)PORT为8位直接地址,(DX)为16位端口地址 2、输出指令OUT PORT,AL;(PORT) (AL)OUT PORT,AX;(PORT) (AX)OUT DX,AL;(DX) (AL)OUT DX,AX;(DX) (AX)3、字节转换指令XLAT; (AL)(BX)+(AL)例:MOV BX, offset TABLE XLAT若(AL)=3,则首先应将表格首地址送BX,执行XLAT后 (AL)=9TABLE: DB 0 DB 1 DB 4 DB 9 DB 16 DB 25(三)地址传送指令LEA (load effective address)LDS (load DS with pointer)LES (load ES with pointer)1、有效地址传送指令LEA reg16,SRC ;(reg16) SRC例:MSG db Hello$ LEA DX,MSG;相当于: MOV DX,OFFSET MSG 指令执行后(DX)=2000H如果指令:MOV DX,MSG则:(DH)=e (DL)=H2、LDS reg16,mem32地址指针装入DS;(reg16) (mem32);(DS) (mem32+2)把源操作数指定的4个字节传送到指定的寄存器及DS寄存器中。例:VECT DW 01F0H DW 2018HLDS BX,VECT;执行后:(DS)=2018H(BX)=01F0H3、LES reg16,mem32LES reg16,mem32;(reg16) (mem32);(ES) (mem32+2)把源操作数指定的4个字节传送到指定的寄存器及ES寄存器中。8.6 算术指令(1)(一)加法指令1、ADD DST,SRC 加法 ;(DST) (SRC) + (DST)具体指令:ADD reg,reg/memADD mem, regADD reg,immADD mem,immADD acc,imm对六个标志位OF、SF、ZF、AF、PF、CF都有影响2、ADC DST,SRC 带进位加法 ; (DST) (SRC) + (DST)+CF具体指令:ADC reg,regADC reg,memADC mem,reg ADC reg,immADC mem,immADC acc,imm对六个标志位都有影响3、INC DST 加1;(DST) (DST)+1,不影响进位标志具体指令:INC regINC mem实 例有两个4字节的无符号数相加,这两个数分别放在2000H和3000H开始的存储单元中,低位在前,高位在后,要求进行运算后,得到的和放在2000H开始的内存单元中。CLCMOV SI, 2000HMOV AX, SIMOV DI, 3000HADD AX, DIMOV SI, AXMOV AX, SI+2ADC AX, DI+2MOV SI+2, AXMOV AX, 2000HADD AX, 3000HMOV 2000H, AXMOV AX, 2000H+2ADC AX, 3000H+2MOV 2000H+2, AX(二)减法指令5、CMP DST,SRC 比较;(DST)-(SRC),仅影响标志具体指令:CMP reg,regCMP reg,memCMP mem,regCMP reg,immCMP mem,immCMP acc,imm对六个标志位都有影响(三)乘法指令 1、无符号数乘法MUL SRC 被乘数总放在累加器中;(AX) (AL)*(SRC)(DX,AX) (AX)*(SRC)具体指令:MUL reg8/ reg16MUL mem8/ mem16若乘积高半部分不为0,CF=OF=1,否则为0。不影响其他位。MOV AL,0A0HMOV BL,45H MUL BL2、有符号数乘法IMUL SRC;(AX) (AL)*(SRC) (DX,AX) (AX)*(SRC)具体指令:IMUL reg8/reg16IMUL mem8/mem16若乘积高半部分为低半部分的符号扩展,CF=OF=1,否则为0。不影响其他位。先将数变为原码,去掉符号位运算,再判断符号,求补码。(四)除法指令除数只能是被除数字长的一半。1、无符号数除法指令DIV SRC ;(AL) (AX)/(SRC), 商 (AH) (AX)%(SRC),余数 或 (AX)(DX,AX)/(SRC), (DX) (DX,AX)%(SRC)具体指令: DIV reg8;DIV reg16 DIV mem8;DIV mem16不影响标志位。如果商超过范围,则引起0型中断。2、有符号数除法指令IDIV SRC; 操作与DIV相同具体指令:IDIV reg8IDIV reg16IDIV mem8IDIV mem16不影响标志位3、字节转换成字指令(有符号数)CWB ; 若(AL) 80H则(AH)0,否则(AH) FFH。不影响标志位4、有符号字转换成双字指令CWD; 若(AX)8000H,则(DX) 0, 否则(DX) FFFFH.不影响标志位除法实例一个字除以一个字节MOV AX,NUM_BDIV Dvr_BIDIV Dvr_B(or)一个字节除以一个字节MOV AL,NUM_BSUB AH,AHDIV Dvr_B(无符号数)MOV AL,NUM_BCBWIDIV Dvr_B(有符号数)一个字除以一个字节MOV AX,NUM_BDIV Dvr_BIDIV Dvr_B(or)一个字节除以一个字节MOV AL,NUM_BSUB AH,AHDIV Dvr_B(无符号数) MOV AL,NUM_BCBWIDIV Dvr_B(有符号数)(一)逻辑运算指令可以选用不同的源操作数的各位代码,使目的操作数的某些位置1,清0或测试目的操作数的某些位。1、AND DST,SRC;(DST) (DST)&(SRC) SRC,DST均不能为段寄存器具体指令AND reg,reg/mem/immAND mem,reg/immAND acc,immOF=CF=0,正常影响SF、ZF、PF、OR DST,SRC;(DST) (DST)|(SRC)具体指令OR reg,reg /mem/immOR mem,reg /immOR acc,immOF=CF=0,正常影响SF、ZF、PF3 、NOT DST;(DST) (DST)具体指令:NOT regNOT mem对标志位无影响4、XOR DST,SRC ;(DST) (DST)(SRC)具体指令XOR reg,reg/ mem/ immXOR mem,reg/immXOR acc,immOF=CF=0,正常影响SF、ZF、PF5、TEST DST,SRC ;(DST)&(SRC),结果不返回目的操作数,仅影响标志具体指令TEST reg,reg/mem/immTEST mem,immTEST acc,immOF=CF=0,正常影响SF、ZF、PF1、 逻辑左移指令 SHL DST,count; ;count可以为1, ;也可以为CL做移位计数。 具体指令:SHL reg,1/CLSHL mem,1/CL;移位和循环指令均雷同。 ;正常影响PF、SF、ZF、CF当count=1时若符号位有变化则OF=1,否则为0。2、算术左移指令 SAL DST,count;3、逻辑右移指令SHR DST,count;4、算术右移指令SAR DST,count;;循环移位只影响CF、OF5、循环左移指令ROL DST,count;6、循环右移指令ROR DST,count;7、带进位循环左移指令RCL DST,count;8、带进位循环右移指令RCR DST,count8.8 串处理指令对一系列含有字母、数字的字符串进行操作处理,最多可处理64K字节的字符串。使用字串指令时应注意:1、字符串指令可以有一个源操作数字符串或一个目的操作数字符串,或二者均有。 这类指令都是用SI对源操作数进行间接寻址并在DS段,用DI对目的操作数进行间接寻址并在ES段,对 DS、SI、ES、DI 赋值(DS和ES可隐含)。2、将字串长度送 CX(计数值)3、设置方向标志DF的值:若SI、DI是首地址,使DF = 0(CLD), 地址加 1或加 2修改,若SI、DI是末地址,使DF = 1 (STD) 地址减 1或减 2修改。4、加重复前缀时,指令执行的顺序是: (1)先判断 CX = 0 ?CX = 0 退出,CX = 0,CX - 1 CX (2)执行字串指令 (3)修改SI、DI 的内容 (4)回到(1)一)数据串传送指令1、串传送指令MOVS DST,SRC ;DST与SRC做类型检查,具体指令:MOVSB ; (ES:DI) (DS:SI), (SI) (SI)1, (DI)(DI)1MOVSW ; (ES:DI) (DS:SI), (SI) (SI)2, (DI) (DI)2其中,加、减地址指针SI和DI由FLAG中的DF决定,DF=0地址增加,DF=1地址减少。2、建立方向标志指令CLD ;DF0STD ;DF13、重复串操作直到(CX)=0在串操作指令前,可加重复操作REP前缀,使串连续操作直到(CX)=0.例:REP MOVSB;以CX寄存器做计数器,每传送一个数(CX)减1,直到(CX)为0。2、条件重复前缀(1)相等或为0时重复REPZREPE执行操作:若(CX)=0或ZF=0(比较不相等)时退出,否则继续执行。(2)不相等或不为0时重复REPNZREPNE执行操作:若(CX)0且ZF=0(比较不相等)时继续执行,否则退出。3、串扫描指令SCAS DST;DST做类型检查具体指令:SCASB ;(AL)-(ES:DI), (DI) (DI)1,影响标志SCASW ;(AX)-(ES:DI), (DI) (DI)2,影响标志地址增减由DF决定。可加条件前缀。默认AL/AX为扫描值寄存器例:REPNZ SCASB8.9 控制转移指令(一)无条件转移指令JMP TARGET;转移到目的地址具体指令:JMP short_label; (IP)=(IP)+disp8JMP near_label; (IP)=(IP)+disp16JMP far_label;(IP),(CS)由指令码给出JMP memptr16;段内间接转移JMP regptr16; JMP memptr32; 段间间接转移不影响标志位二)条件转移指令均为位移量为8位的段内相对寻址方式(-128+127)1、根据单个标志置位情况转移JZ short_label ;结果为0转移JE short_label ;结果相等转移测试条件:ZF=1JNZ short_label;结果不为0则转移JNE short_label;结果不相等则转移测试条件:ZF=0JS short_label;结果为负则转移测试条件:SF=1JNS short_label;结果非负则转移测试条件:SF=0JNO short_label;结果不溢出则转移测试条件:OF=0JO short_label;结果溢出则转移测试条件:OF=1JP short_label;奇偶为1则转移测试标志:PF=1JNP short_label;偶转移测试标志:PF=02、两个无符号数比较转移根据两数相减或比较后的结果来判断JB/JNAE short_label ; 低于/不高于等于 测试条件: CF=1 and ZF=0JNB/JAE short_label ; 不低于/高于等于测试条件: CF=0 or ZF=1JBE /JNA short_label ;小于等于转移/不大于转移测试条件:CF=1 or ZF=1JNBE/JA short_label ;小于也不等于转移/大于转移 测试条件:CF=0 and ZF=03、两个有符号数比较转移JL/JNGE short_label ; 小于转移/不大于等于转移测试条件:SF xor OF =1 且 ZF=0JNL/JGE short_label ;不小于转移/大于等于转移测试条件:SF xor OF=0 或 ZF=1JNLE/JG short_la

温馨提示

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

评论

0/150

提交评论