8086 133条指令有哪些
问题描述
- 精选答案
-
8086指令包含133条基本指令, 一般分为五类来介绍
传送指令,算术运算指令,逻辑运算和移位指令,串操作指令,控制转移指令
一、数据传送类指令
数据传送是计算机中最基本、最重要的一种操作,传送指令也是最常使用的一类指令
传送指令把数据从一个位置传送到另一个位置
除标志寄存器传送指令外,均不影响标志位
重点掌握
MOVXCHGPUSHPOP XLAT LEA
1、通用数据传送指令
提供方便灵活的通用传送操作
有3条指令
MOV
XCHG
PUSHPOP
①基本传送指令MOV(move)
mov cl,4;cl←4,字节传送
mov dx,0ffh;dx←00ffh,字传送
mov si,200h;si←0200h,字传送
mov bvar,0ah;字节传送
假设bvar是一个字节变量,定义如下:bvardb 0
mov wvar,0bh;字传送
假设wvar是一个字变量,定义如下:wvardw 0
mov al,[bx];al←ds:[bx]
mov dx,[bp];dx←ss:[bp+0]
mov dx,[bp+4];dx←ss:[bp+4]
mov es,[si];es←ds:[si]
2,非法指令的主要现象:
两个操作数的类型不一致
无法确定是字节量还是字量操作
两个操作数都是存储器
段寄存器的操作有一些限制
例子:
1、当无法通过任一个操作数确定是操作类型时,需要利用汇编语言的操作符显式指明
MOV [BX+SI], 255;非法指令,修正:
mov byte ptr [bx+si],255
byte ptr 说明是字节操作
mov word ptr [bx+si],255
word ptr 说明是字操作
2,8088指令系统除串操作指令外,不允许两个操作数都是存储单元(存储器操作数)
MOV buf2, buf1如MOV[BX],[SI]
3,MOV DS, ES;非法指令,修正:
mov ax,es
mov ds,ax
MOV DS, 100H;非法指令,修正:
mov ax,100h
mov ds,ax
MOV CS, [SI];非法指令
指令存在,但不能执行
②交换指令XCHG(exchange)
XCHG reg,reg/mem
reg reg/mem
寄存器与寄存器之间对换数据
寄存器与存储器之间对换数据
不能在存储器与存储器之间对换数据
例子:
mov ax,1199h;ax=1199h
xchg ah,al;ax=9911h
等同于 xchg al,ah
mov wvar,5566h;wvar是一个字量变量
xchg ax,wvar ;ax=5566h,wvar=9911h
等同于 xchg wvar,ax
注意:不能在两个内存单元之间交换
如:XCHG [BX],[SI]错误!
段寄存器中CS、IP不能做操作数
③ 堆栈操作指令
1.堆栈是一个“后进先出LIFO”(或说“先进后出FILO”)的主存区域,位于堆栈段中;SS段寄存器记录其段地址
堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定
2,堆栈只有两种基本操作:进栈和出栈,对应两条指令PUSH和POP
堆栈由栈底向低地址方向生成
push:进栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部
如:push ax
push [2000h]
出栈指令POP:出栈指令把栈顶的一个字传送至指定的目的操作数,然后堆栈指针SP加2
如:pop ax
pop wvar
3,堆栈操作的特点
堆栈操作的单位是字,进栈和出栈只对字进行
数据从栈顶压入和弹出时,都是低地址送低字节,高地址送高字节
堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据
堆栈段是程序中不可或缺的一个内存区,常用来
临时存放数据
传递参数
保存和恢复寄存器
2、累加器专用传送指令
① 输入输出指令(IN/OUT指令)
格式:IN AL,port;port为直接端口地址
IN AL,DX ;DX的内容为端口地址(间接方式)
INAX,port;
INAX,DX
OUT port,AL
OUTDX, AL
OUT port,AX
OUTDX, AX
注意:
①只能用累加寄存器不能用其它寄存器
②当端口地址在00H—FFH之间可以用直接地址
当端口地址大于FFH时必须用DX间址形式
例:IN AL,40H;(40H)AL
IN AX,80H; (80H)、(81H)AX
MOVDX, 0382H
IN AL,DX ;(0382H) AL
OUT 62H, AL
MOVDX, 0380H
OUT DX,AX
② 换码指令XLAT(查表指令)
将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给AL
XLAT;al←ds:[bx+al]
换码指令执行前:
在主存建立一个字节量表格,内含要转换成的目的代码
表格首地址存放于BX,AL存放相对表格首地址的位移量
换码指令执行后:
将AL寄存器的内容转换为目标代码
③址传送指令 三条LEA 、LDS、LES
将存储器操作数的有效地址送至指定的16位通用寄存器
LEA r16, mem
r16←mem的有效地址EA
例子:有效地址的获取
LEAAX, [2375H] ; AX=2375H
LEASP, [BX+SI] ; SP=(BX)+(SI)
区别: LEA SI, BUFF;SI=BUFF
MOV SI,BUFF;SI=(BUFF)
LDSr16, mem
ds、r16←mem中的双字,
执行后,会更新r16,ds的值。前面两个字节送到r16,后面两个字节送到ds
LESr16, mem
es、r16←mem中的双字,执行后,会更新r16,ds的值,效果与lds类似
3、标志传送指令
①读标志指令
LAHF ;标志寄存器低字传送到AH
②设标志指令
SAHF ; AH的内容送标志寄存器低8位
③标志寄存器堆栈指令
PUSHF ;标志寄存器内容(16位)压栈
④标志寄存器出栈指令
POPF;弹出标志寄存器的内容。
二、算术运算类指令
概述:算术运算类指令用来执行二进制的算术运算:加减乘除以及BCD码调整。
这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志。
重点掌握
加法指令:ADD、ADC、INC
减法指令:SUB 、SBB、DEC、CMP、NEG
1、加法和减法指令
加法指令:ADD, ADC和INC
减法指令:SUB, SBB, DEC, NE
- 其他回答
-
⼀、 数据传送指令:MOV、XCHG、LEA、LDS、LES、PUSH、POP、PUSHF、POPF、CBW、CWD、CWDE。
⼆、 算术指令:ADD、ADC、INC、SUB、SBB、DEC、CMP、MUL、DIV、DAA、DAS、AAA、AAS。
三、 逻辑指令:AND、OR、XOR、NOT、TEST、SHL、SAL、SHR、SAR、RCL、RCR、ROL、ROR。
四、 控制转移指令:JMP、Jcc、JCXZ、LOOP、LOOPZ、LOOPNZ、LOOPNE、CALL、RET、INT。
五、 串操作指令:MOVS、LODS、STOS、CMPS、SCAS。
六、 标志处理指令:CLC、STC、CLD、STD。
猜你喜欢内容
-
什么龟什么鼈的词语有哪些
什么龟什么鼈的词语有哪些回答数有1条优质答案参考
-
什么龟什么酒的词语有哪些
什么龟什么酒的词语有哪些回答数有1条优质答案参考
-
什么龟什么药的词语有哪些
什么龟什么药的词语有哪些回答数有1条优质答案参考
-
什么龟什么腋的词语有哪些
什么龟什么腋的词语有哪些回答数有1条优质答案参考
-
什么龟什么肠的词语有哪些
什么龟什么肠的词语有哪些回答数有1条优质答案参考
-
什么龟什么紫的词语有哪些
什么龟什么紫的词语有哪些回答数有1条优质答案参考
-
什么龟什么策的词语有哪些
什么龟什么策的词语有哪些回答数有1条优质答案参考
-
什么龟什么木的词语有哪些
什么龟什么木的词语有哪些回答数有1条优质答案参考
-
什么龙什么黻的词语有哪些
什么龙什么黻的词语有哪些回答数有1条优质答案参考
-
什么龙什么鹄的词语有哪些
什么龙什么鹄的词语有哪些回答数有1条优质答案参考