在微型计算机中机器指令,机器指令语句

机器指令是计算机CPU执行某种操作的命令编码。指令系统是指某一类型CPU中所有机器指令的集合。8086/8088CPU的指令系统共包含92种基本指令,按照功能可将它们分为6大类:数据传送指令、算术运算指令、逻辑运算和移位指令、串操作指令、控制转移指令、处理器控制指令。

中文名

机器指令语句

外文名

machine instruction statement

领    域

计算机机器指令

由1,0组成的特定的二进制数序列

机器指令格式

操作码字段  地址码字段

分    类

数据传送指令、算术运算指令等

机器指令语句指令及其格式

编辑

语音

机器指令是由1,0组成的特定的二进制数序列。

d4e53bb9b307904c5f1a07fe44ab81c6.png

图1

机器指令格式为:操作码字段 地址码字段。其中,操作码字段表示执行操作类型,地址码字段表示操作数的地址或操作数本身。一般的操作数有被操作数,操作数及操作结果三种类型。图1为机器指令的例子。

机器指令语句指令助记符

编辑

语音

为了便于书写和阅读,每条指令通常用3个或4个英文缩写字母来表示。这种缩写码叫做指令助记符。图2是典型的指令助记符。

24d7938d0963cc6878ed795a9131ad65.png

图2

机器指令语句指令符号说明

编辑

语音

AH、AL、BH、BL、CH、CL、DH、DL:八位通用寄存器;

AX、BX、CX、DX、SP、BP、DI、SI:十六位通用寄存器;

SP: 堆栈指针;

IP:指令指针;

FLAGS:标志寄存器;

DI、SI:目的和源变址寄存器;

CS、DS、SS、ES: 段寄存器;

SEG:段寄存器通用符号;

REG:通用寄存器组;

AC:AX或AL/AH(取决于操作数长度)

SRC:源操作数

DST:目的操作数

MEM:存储器操作数

MEM/REG:存储器或通用寄存器操作数

DATA:立即数,8位或16位

OPRD:操作数

n:8位立即数

nn:16位立即数

nnnn: 32位立即数

机器指令语句数据传送指令

编辑

语音

数据传送类指令分为四种:通用数据传送、累加器专用数据传送、地址传送和标志传送。

通用数据传送指令

通用数据传送指令包括最基本的传送指令MOV,堆栈操作指令PUSH和POP,数据交换指令XCHG和查表指令XLAT。

1.基本的传送指令MOV。指令一般形式为:MOV DST,SRC;指令功能:808598ef10f86fc0a7c6b954b41a1af3.svg (字节或字);指令执行后,源操作数不变,目标操作数发生变化且与源操作数相同。例如:指令 MOV AL,BL;若该指令执行前,AL=25H,BL=86H,则指令执行后,AL=BL=86H。

2.堆栈操作指令。在8086/8088系统中,无论压入或弹出操作,都是以字为单位。

(1)入栈指令:指令格式:PUSH OPRD;指令功能:先修改SP-2→SP,然后把一个源操作数(1个字)传送到由SP所指向的堆栈的顶部。

(2)出栈指令:指令格式:POP OPRD;指令功能:是先将栈顶的一个字弹出送往目的操作数,再修改SP+2→SP。

3.交换指令。指令格式:XCHG OPRD1,OPRD2;指令功能:把二个字节或字的操作数相互交换。这二个操作数不能是立即数,也不能同时为存储器操作数。

4.查表指令。指令格式:XLAT SRC_Table;字节查表转换指令,根据表中元素的序号查出对应元素的内容,序号从0,1,2……..。预先(1)将表的首地址存入BX寄存器,(2)要查找元素序号存入AL,执行XLAT指令后,将指定序号对应的元素内容存于AL。

I/O数据传送指令

I/O(输入/输出)指令完成累加器AL(AX)与I/O端口间的数据传送功能。此类指令中,一个操作数为AX(16位)或AL(8位),另一个是I/O端口。I/O端口的地址范围总共64K,0000H-FFFFH。

I/O端口地址的表示方式:(1)直接方式:若端口地址≤FFH,端口地址用立即数直接给出;(2)间接方式:若端口地址>FFH,需要将I/O端口地址存入DX中。用DX可寻址100H-0FFFFH的端口。

1、端口输入指令IN

指令一般格式:IN AC,PORT

指令功能:把1个字节或1个字,由输入端口传送给AL或AX。又分以下几种形式:

(1)直接方式:地址≤FFH

IN AL,n

IN AX,n (n为端口地址)

(2)间接方式:地址>FFH

IN AL,DX

IN AX,DX

2、端口输出指令OUT

指令一般格式:OUT PORT,AC

指令功能:把AL(AX)中的1个字节(字),传送到某个输出端口。

(1)直接方式:

OUT n,AL

OUT n,AX (n为端口地址)

(2)间接方式:

OUT DX,AL

OUT DX,AX

地址传送指令

地址传送指令有3条:

①取有效地址指令LEA。指令一般格式:LEA REG,MEM;指令功能:将源操作数的段内偏移地址传送给目的操作数。

②地址指针装入DS指令LDS。指令一般格式: LDS REG,MEM;指令功能:源操作数必须是内存操作数,把源操作数(内存中的双字数据:32位逻辑地址)的高字部分(段基址)传送给DS,低字部分(段内偏移地址)送指令规定的寄存器。

③地址指针装入ES指令LES。指令一般格式:LES REG,MEM;指令功能:把源操作数(内存中的双字数据)的高位字传送给ES(16位段基址),低位字传送给指令规定的16位寄存器中。

标志传送指令

8086/8088有四条标志传送指令。

1.标志装入AH指令。指令格式:LAHF;指令功能:把标志寄存器的低8传送给AH。这样,相应的符号标志SF、零标志ZF、辅助进位标志AF、奇偶标志PF和进位标志CF被传送至AH的对应位。

2、 设置标志指令。指令格式:SAHF;此指令功能与LAHF相反,是把AH内容传给标志寄存器FLAGS的低8位,高8位不受影响。

3、 标志压入堆栈指令。指令格式:PUSHF;PUSHF指令先修改堆栈指针,即SP-2→SP,把整个标志寄存器内容压入堆栈。指令本身的执行不影响标志位。

4、 标志弹出堆栈指令。指令格式:POPF;这条指令把当前堆栈指针所指的一个字,传送给标志寄存器,同时修改堆栈指针,即SP+2→SP。

机器指令语句算术运算指令

编辑

语音

8086/8088提供加、减、乘、除四种基本的算术操作。操作数可是带符号数的字或字节,也可是不带符号数的字或字节。若是带符号数,则用补码表示。8086/8088还提供了各种校正操作指令,可以进行BCD码或ASCⅡ码表示的十进制数的算术运算。

二进制加减法指令

(1)不带进位的加减法指令ADD和SUB。指令用于无符号或带符号数的字节或字的加减运算。指令格式及功能:

ADD 目标, 源;目标+ 源→目标

SUB 目标, 源;目标-源→目标

(2)带进(借)位的加减法指令ADC及SBB。此类指令通常用来实现多字节、多字的加/减运算。除了在加法运算时须在最低位加上进位位CF值,或在减法运算时在最低位减去借位CF值外,其它与ADD,SUB指令相同。指令格式及功能:

ADC 目标, 源;目标+源+CF→ 目标

SBB 目标, 源;目标-源-CF→目标

(3) 加法和减法的ASCII码调整指令。对于加法调整,若为非压缩BCD码,使用指令AAA;若为压缩BCD码,使用指令DAA。对于减法调整,若为非压缩BCD码,使用指令AAS;若为压缩BCD码,使用指令DAS。

(4)加1/减1指令INC/DEC。指令格式及功能:

INC 目标 ;目标+1→目标

DEC 目标;目标-1→目标

指令字节较短,运行速度快,主要用于在循环程序中修改地址指针或循环次数。INC及DEC指令运算结果不影响CF标志,对其他标志位的影响与加减法指令ADD、SUB相同。

(5)求补及比较指令NEG、CMP。求补NEG及比较CMP指令都属于特殊的二进制减法运算。

指令格式及功能:NEG 目标 ;0-目标→目标

CMP 目标,源;目标-源→状态标志

二进制乘除法指令

(1)无符号数乘法指令:指令格式及功能:MUL SRC ;

(2)带符号数乘法指令:指令格式及功能:IMUL SRC ;

(3) 无符号数除法指令:指令格式及功能:DIV SRC ;

(4)带符号数除法指令:指令格式及功能:IDIV SRC ;

(5)转换指令(符号扩展):CWB: 将AL的符号位扩展到AH中;CWD:将AX的符号位扩展到DX中;

机器指令语句逻辑与移位

编辑

语音

为了处理字节或字中各位信息,8086/8088提供了三种位处理指令:逻辑运算指令、移位类指令和循环移位类指令。

逻辑运算指令包括逻辑与、逻辑或、逻辑非、逻辑异或和逻辑测试。所有的指令都对其操作数按每一位进行逻辑操作;操作数可以是字节或字。

①逻辑非指令NOT: 逻辑非指令主要用来使某数变反。指令格式及功能:NOT 目标;目标→目标;逻辑非指令不影响状态标志。

②逻辑与指令AND:指令格式及功能:AND 目标,源;目标 ∧源→目标和状态标志;指令对状态标志的影响:执行后将使CF、OF标志复位;按结果影响PF、ZF、SF标志;AF标志不定。

③逻辑或指令OR :指令格式及功能:OR 目标,源;目标 ∨源→目标和状态标志;或指令对状态标志的影响与AND 指令相似。或操作常用来使目标操作数某位置位。

④逻辑异或指令XOR :此类指令对状态标志的影响也与AND指令相似。XOR指令可使目标操作数某些位取反。指令格式:XOR 目标,源。

⑤逻辑测试指令TEST :指令格式及功能:TEST 目标,源;目标 ∧源→目标和状态标志。指令的功能是将两个操作数按位相与,但结果不送回目标,只影响状态标志,影响情况同AND指令。TEST指令常用来检测操作数的某位是1还是0。[1]

参考资料

1.

杨素行.微型计算机系统原理及应用(第3版):清华大学出版社,2014年

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值