计算机硬件及网络微机原理与接口技术_第1页
计算机硬件及网络微机原理与接口技术_第2页
计算机硬件及网络微机原理与接口技术_第3页
计算机硬件及网络微机原理与接口技术_第4页
计算机硬件及网络微机原理与接口技术_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

2023/6/119:451§3-38086的指令系统

按功能可分为以下六类:数据传送指令算术运算指令逻辑运算和移位指令串操作指令转移指令处理器控制指令计算机硬件及网络微机原理与接口技术全文共57页,当前为第1页。2023/6/119:452§3-38086的指令系统一、数据传送指令(14条)通用数据传送指令地址目标传送指令MOV字节或字的传送LEA装入有效地址PUSH如栈指令LDS装入数据段寄存器POP出栈指令LES装入附加段寄存器XCHG交换字或字节标志传送指令XLAT表转换LAHF标志寄存器低字节装入AH输入输出指令SAHFAH内容装入标志寄存器低字节IN输入PUSHF标志寄存器入栈指令OUT输出POP出栈,并送入标志寄存器计算机硬件及网络微机原理与接口技术全文共57页,当前为第2页。2023/6/119:453§3-38086的指令系统-数据传送指令通用数据传送指令(GeneralPurposeDataTranfers)(1)MOV传送指令(Move)

指令格式:MOV

目的,源

指令功能:实现CPU的内部寄存器间或寄存器与存储器间的数据传送。例:MOVAX,0FF00HMOV[DI],AXMOVCX,[1000H]MOVBL,40HMOVWORDPTR[SI],01HMOVAL,BL通用寄存器AXAHBXALCXBHDXBLSICHDICLSPDHBPDL立即数存储器段寄存器CS,DS,ES,SS计算机硬件及网络微机原理与接口技术全文共57页,当前为第3页。2023/6/119:454§3-38086的指令系统-数据传送指令注意:指令中至少要有一项明确说明传送的是字节还是字;IP寄存器不能用作源操作数或目的操作数;立即数和CS寄存器不能用作目的操作数;除了源操作数为立即数的情况外,两个操作数中必有一个是寄存器,但不能都是段寄存器;即MOV指令不能在两个存储单元之间直接传送数据,也不能在两个段寄存器之间直接传送数据。(1)MOV传送指令(Move)计算机硬件及网络微机原理与接口技术全文共57页,当前为第4页。2023/6/119:455§3-38086的指令系统-数据传送指令(1)MOV传送指令(Move)【数据段】通常,数据通常存放在数据段中。例如,某个程序的数据段:

DATA

SEGMENT

;数据段开始

AREA1

DB

14H,3BH

;定义字节变量

AREA2

DB

3DUP(0)

;复制操作

ARRAY

DW

3100H,01A6H

;定义字变量

STRING

DB

‘GOOD’

DATA

ENDS

;数据段结束汇编后,DATA将被赋予一个具体的段地址。各变量将自偏移地址0000H开始依次存放,各符号地址等于它们在数据段中的偏移量。143B000001‘G’000031A6‘O’‘O’‘D’AREA1AREA2ARRAYSTRING计算机硬件及网络微机原理与接口技术全文共57页,当前为第5页。2023/6/119:456§3-38086的指令系统-数据传送指令(1)MOV传送指令(Move)AREA1的偏移地址为0000H;AREA2的偏移地址为0002H;ARRAY的偏移地址为0005H;STRING的偏移地址为0009H。143B000001‘G’000031A6‘O’‘O’‘D’AREA1AREA2ARRAYSTRINGDATA SEGMENT ;数据段开始

AREA1 DB14H,3BH;定义字节变量

AREA2 DB3DUP(0);复制操作

ARRAY DW3l00H,01A6H;定义字变量

STRING DB‘GOOD’DATA ENDS ;数据段结束计算机硬件及网络微机原理与接口技术全文共57页,当前为第6页。2023/6/119:457§3-38086的指令系统-数据传送指令(1)MOV传送指令(Move)143B000001‘G’000031A6‘O’‘O’‘D’AREA1AREA2ARRAYSTRING例

MOVDX,OFFSETARRAY解:ARRAY的偏移地址DX。(OFFSET:取后面的符号偏移地址的值)

设:ARRAY的定义如左图所示

则:DX=0005H例:MOVAL,AREA1;ALAREA1中的内容14H

MOVAREA2,AL;0002H单元14H计算机硬件及网络微机原理与接口技术全文共57页,当前为第7页。2023/6/119:458§3-38086的指令系统-数据传送指令(2)PUSH进栈指令(PushWordontoStack)

指令格式:PUSH

指令功能:数据入堆栈

工作过程:SP←SP-2;(SP+1,SP)←源

源操作数要求:可以是16位通用寄存器、段寄存器、存储器中的数据字,但不能是立即数。

最后一项

高地址栈底(SP)压入弹出栈顶(SS)最大容量64KSP总是指向偶地址单元段址计算机硬件及网络微机原理与接口技术全文共57页,当前为第8页。2023/6/119:459§3-38086的指令系统-数据传送指令(3)POP出栈指令(PopWordoffStack)

指令格式:POP

目的

指令功能:数据出堆栈

工作过程:目的

←(SP+1,SP) SP←SP+

2;目的操作数要求:

可以是16位通用寄存器、段寄存器或存储单元,但CS不能作目的操作数。

最后一项

高地址栈底(SP)压入弹出栈顶(SS)最大容量64KSP总是指向偶地址单元段址计算机硬件及网络微机原理与接口技术全文共57页,当前为第9页。2023/6/119:4510§3-38086的指令系统-数据传送指令PUSH、POP指令实例计算机硬件及网络微机原理与接口技术全文共57页,当前为第10页。2023/6/119:4511§3-38086的指令系统-数据传送指令(4)XCHG交换指令(Exchange)

指令格式:XCHG

目的,源

指令功能:源操作数、目的操作数数据交换。操作数要求:交换可以在寄存器之间、寄存器与存储器之间进行;段寄存器不能作为操作数;不能直接交换两个存储单元中的内容。例设AX=2000H,DS=3000H,BX=1800H,(31A00H)=1995H。则执行指令XCHGAX,[BX+200H]后,结果如何?解:把内存中的一个字与AX中的内容进行交换。源操作数物理地址=3000×10H+1800H+200H=31A00H,指令执行后:AX=1995H,(3lA00H)=2000H计算机硬件及网络微机原理与接口技术全文共57页,当前为第11页。2023/6/119:4512§3-38086的指令系统-数据传送指令(5)XLAT表转换指令(TableLookup-Translation)

指令格式:

XLAT转换表

或:XLAT

指令功能:使累加器(AL)中的一个值变换为内存表格中的某一个值,一般用来实现代码转换,即查表功能。XLAT指令使用步骤:使用之前必须先建立一个表格,表格中的内容是所需要转换的代码;将转换表的起始地址装入BX寄存器;欲查的某项与表头地址的位移量AL,即表格最多包含256个字节;执行XLAT指令后,根据位移量从表中查到转换后的代码值AL寄存器中。计算机硬件及网络微机原理与接口技术全文共57页,当前为第12页。2023/6/119:4513§3-38086的指令系统-数据传送指令(5)XLAT表转换指令(TableLookup-Translation)例

若十进制数字0~9的LED七段码对照表如表所示,试用XLAT指令求数字5的七段码值。

十进制数字七段显示码十进制数字七段显示码040H512H179H602H224H778H330H800H419H918H十进制数的七段显示码表计算机硬件及网络微机原理与接口技术全文共57页,当前为第13页。2023/6/119:4514§3-38086的指令系统-数据传送指令(5)XLAT表转换指令(TableLookup-Translation)程序如下:

TABELDB40H,79H,24H,30H,19H;七段数码表数据

DB12H,02H,78H,00H,18H;分别对应0~9的七段字型码

……………MOV AL,5

;AL数字5的位移量

MOV BX,OFFSETTABLE ;BX表格首地址

XLATTABLE ;查表得:AL=12H计算机硬件及网络微机原理与接口技术全文共57页,当前为第14页。2023/6/119:4515

§3-38086的指令系统——数据传送指令

2.输入输出指令(InputnndOutput)IN指令:从数据端口输入数据或从状态端口输入状态字。OUT指令:输出数据或命令给指定的I/O端口。

<1>

直接输入输出指令格式:INAL,PORT;AL(PORT)INAX,PORT;AX(PORT+1,PORT)OUTPORT,AL;(PORT)ALOUTPORT,AX;(PORT+1,PORT)AX注:PORT为输入输出端口号,范围为0~255(00~FFH)计算机硬件及网络微机原理与接口技术全文共57页,当前为第15页。2023/6/119:4516

<2>间接输入输出指令

格式:INAL,DX;

AL(DX)INAX,DX;AX(DX+1,DX)OUTDX,AL;(DX)ALOUTDX,AX;(DX+1,DX)AX

在间接输入输出指令之前,需将端口号送入DX寄存器。

MOVDX,XXXXH;例

OUT 85H,AL ;85H端口AL内容

MOV DX,0FF4H ;端口地址DX=0FF4H OUT DX,AL ;FF4H端口AL内容

MOV DX,300H ;DX指向300HOUT DX,AX ;300H端口

AL内容,

301H端口AH内容§3-38086的指令系统——数据传送指令

计算机硬件及网络微机原理与接口技术全文共57页,当前为第16页。2023/6/119:45173.地址目标传送指令(AddressObjectTransfers):

专用于传送地址码的指令,它可以用来传送操作数的段地址和偏移地址,含以下三条指令:

⑴LEA取有效地址指令(LoadEffectiveAddress)

指令格式:LEA目的,源

指令功能:取源操作数地址的偏移量,传送到目的操作数

操作数要求:源操作数必须是存储单元,目的操作数必须是一个除段寄存器之外的16位寄存器。使用时要注意与MOV指令的区别。例假设SI=1000H,DS=5000H,(51000H)=1234H

LEA BX,[SI];执行完该指令后,BX=1000H(送偏移地址)

MOV BX,[SI];执行完该指令后,BX=1234H(送内容)§3-38086的指令系统——数据传送指令

计算机硬件及网络微机原理与接口技术全文共57页,当前为第17页。2023/6/119:4518

⑵LDS将双字指针送到寄存器和DS指令(LoadPointerusingDS)

指令格式:LDS 目的,源指令功能:从源操作数指定的存储单元中,取出一个变量的4字节地址指针,送进一对目的寄存器。其中前两个字节(表示变量的偏移地址)送到指令中指定的目的寄存器中,后两个字节(表示变量的段地址)送入DS寄存器。操作数要求:源操作数必是存储单元,该单元开始的连续4个字节存放一个变量的地址指针。目的操作数必须是16位寄存器,常用SI寄存器,但不能用段寄存器。例设DS=1200H,(12450H)=F346H,(12452H)=0A90H,执行指令LDSSI,[0450H]

后,SI=F346H,DS=0A90H注:源操作数的物理地址=DS×10H+450H=12450H§3-38086的指令系统——数据传送指令

计算机硬件及网络微机原理与接口技术全文共57页,当前为第18页。2023/6/119:4519⑶LES将双字指针送到寄存器和ES指令(LoadPointerusingEs)指令格式:LES 目的,源指令功能:与LDS指令的操作基本相同,不同的是:要将源操作数所指向的存储单元里存放的地址指针中的段地址部分送到ES寄存器中,而不是DS寄存器,目的操作数常用DI寄存器。例设DS=0100H,BX=0020H,(01020H)=0300H,(01022H)=0500H。执行指令LESDI,[BX]

后,DI=0300H,ES=0500H注:源操作数的物理地址=DS×10H+BX=0100H×10H+0020H=01020H§3-38086的指令系统——数据传送指令

计算机硬件及网络微机原理与接口技术全文共57页,当前为第19页。2023/6/119:45204.标志传送指令(FlagTransfers):

读取标志指令:LAHF(5、3、0为任意值)--标志寄存器低8位AH设置标志指令:SAHF

--标志寄存器低8位AH,影响PSW把标志寄存器的内容压入堆栈:PUSHF从堆栈弹出到标志寄存器:POPF,影响PSW1511109876543210OFDFIFTFSFZFAFPFCFAHD7D6D4D2D0§3-38086的指令系统——数据传送指令

计算机硬件及网络微机原理与接口技术全文共57页,当前为第20页。2023/6/119:4521§3-38086的指令系统

——数据传送指令

⑴LAHF标志送到AH指令(LoadAHfromFlag)

指令格式:LAHF

指令功能:标志寄存器SF、ZF、AF、PF和CF

AH寄存器的位7、6、4、2和0。

注意:◎位5、3、1的内容未定义,是任意值。◎执行这条指令后,标志位本身并不受影响。◎这5个标志送进AH后,AH便相当于8080/8085的标志寄存器,从而能对8080/8085程序进行转换,使它们能运行在8086/8088系统上。1511109876543210OFDFIFTFSFZFAFPFCFAHD7D6D4D2D0计算机硬件及网络微机原理与接口技术全文共57页,当前为第21页。2023/6/119:4522§3-38086的指令系统

——数据传送指令

⑵SAHFAH送标志寄存器(StoreAHintoFlags)

指令格式:SAHF

指令功能:AH内容→标志寄存器。

注意:◎位5、3、1的内容未定义,是任意值。◎执行这条指令后,高位标志并不受影响。◎为8080/8085提供兼容性。1511109876543210OFDFIFTFSFZFAFPFCFAHD7D6D4D2D0计算机硬件及网络微机原理与接口技术全文共57页,当前为第22页。2023/6/119:4523§3-38086的指令系统

——数据传送指令

⑶PUSHF标志入栈指令(PushFlagontoStack)

指令格式:PUSHF

指令功能:将标志寄存器PSW中的内容压入堆栈;并修改堆栈指针,使SPSP-2;

指令执行后对标志位无影响。⑷POPF标志出栈指令(PopFlagoffStack)

指令格式:POPF

指令功能:将堆栈指针SP所指的一个字弹入标志寄存器PSW;并修改堆栈指针,使SPSP+2。

注意:▲要成对使用PUSHF和POPF,可对标志寄存器进行保存和恢复。▲常用在:过程(子程序)调用,中断服务程序,对主程序的状态(即标志位)进行保护。▲也可用来改变追踪标志TF。在8086指令系统中没有直接改变TF(D8位)的指令。计算机硬件及网络微机原理与接口技术全文共57页,当前为第23页。2023/6/119:4524§3-38086的指令系统

——算术运算指令二、算术运算指令算术运算指令可处理4种类型的数:无符号二进制整数带符号二进制整数无符号压缩十进制整数(PackedDecimal)无符号非压缩十进制整数(UnpackedDecimal)一个8位二进制数可看成4种不同类型的数,所表示的数值亦不同。数的表示:二进制数:可以是8位或16位,若是带符号数,则用补码表示。压缩十进制数:一个字节中存放两个BCD码十进制数。非压缩十进制数:—个字节的低半字节存放十进制数,高半字节为全零。例如,对十进制数字58:压缩十进制数表示:只需一个字节,即01011000B;非压缩十进制数表示:需两个字节,即00000101B和00001000B。计算机硬件及网络微机原理与接口技术全文共57页,当前为第24页。2023/6/119:4525§3-38086的指令系统

——算术运算指令二进制码(B)十六进制(H)无符号二进制(D)带符号二进制(D)非压缩十进制压缩十进制00000111077+77071000100189137-119无效8911000101C5197-59无效无效4种类型数的表示方法8086/8088指令系统提供:加、减、乘、除运算指令:处理无符号或带符号的8位/16位二进制数的算术运算;调整操作指令:进行压缩的或非压缩的十进制数的算术运算;加法和减法运算指令:带符号数和无符号数的加法和减法的运算可以用同一条加法或减法指令来完成。乘法和除法运算:分别设置无符号数和带符号数的乘、除法指令。绝大部分算术运算指令都影响状态标志位。计算机硬件及网络微机原理与接口技术全文共57页,当前为第25页。2023/6/119:4526§3-38086的指令系统

——算术运算指令加法减法ADD加法SUB减法ADC带进位的加法SBB带借位的减法INC增量DEC减量AAA加法的ASCII调整NEG取负DAA加法的十进制调整CMP比较除法AAS减法的ASCII调整DIV无符号数除法DAS减法的十进制调整IDIV整数除法乘法AAD除法的ASCII调整MUL无符号数乘法CBW把字节转换成字IMUL整数除法CWD把字转换成双字AAM乘法的ASCII调整算术逻辑指令计算机硬件及网络微机原理与接口技术全文共57页,当前为第26页。2023/6/119:45271.加法指令(Addition)⑴ADD加法指令(Addition)

指令格式:ADD目的,源指令功能:目的←源十目的⑵ADC带进位的加法指令(AdditionwithCarry)

指令格式:ADC目的,源指令功能:目的←源十目的十CF注意:源操作数可以是寄存器、存储器、立即数;目的操作数:只能用寄存器、存储单元。源、目的操作数不能同时为存储器,且类型必须一致,均为字节或字;这两条指令影响的标志位为:CF、OF、PF、SF、ZF和AF。§3-38086的指令系统

——算术运算指令计算机硬件及网络微机原理与接口技术全文共57页,当前为第27页。2023/6/119:4528§3-38086的指令系统

——算术运算指令例:两种加法指令的实例

ADDAL,18H ;AL←

AL十18HADCBL,CL ;BL←

BL十CL十CFADCAX,DX ;AX←

AX十DX十CFADDAL,COST[BX];AL内容和地址=DS:(COST+BX)的存储字节;相加,结果送ALADDCOST[BX],BL;将BL与物理地址=DS:(COST十BX)的存储字节相加,结果留在该存储单元中例:用加法指令对两个8位16进制数5EH和3CH求和,并分析加法运算指令执行后对标志位的影响。解:MOVAL,5EH ;AL=5EH(94)

MOVBL,3CH ;BL=3CH(60)

ADDAL,BL ;结果AL=9AH计算机硬件及网络微机原理与接口技术全文共57页,当前为第28页。2023/6/119:4529§3-38086的指令系统

——算术运算指令讨论ADD对标志位的影响:▲两个数的相加过程:

010111105EH=94

+00111100即:

+3CH=60100110109AH=154运算后标志位:ZF=0,AF=1,CF=0,SF=l,PF=1,OF=1。▲对标志的解释(人为决定):①两个加数都看成无符号数时,运算结果为9AH,即十进制数154。在这种情况下,SF和OF都没有意义,我们只关心ZF和CF标志,在BCD码运算或奇偶校验时才考虑AF或PF标志。②两个加数都当成带符号数时,符号标志SF和溢出标志OF很重要,而进位标志CF没有意义。带符号数能表示的范围-128~+127,而本例中,两个正数94和60相加,其和为154,由于154超过了范围,即产生了溢出,OF=1计算机硬件及网络微机原理与接口技术全文共57页,当前为第29页。2023/6/119:4530§3-38086的指令系统

——算术运算指令⑶INC增量指令(Increment)

指令格式:INC目的指令功能:目的←目的十1

操作数的要求:通用寄存器、内存。注意:▲这条指令主要用在循环程序中,对地址指针和循环计数器等进行修改;▲指令执行后影响AF、OF、PF、SF和ZF,但不影响进位标志CF。▲该指令只有一个操作数时,如果要使内存单元的内容增1,程序中必须说明该存储单元是字还是字节。例INCBL

;BL寄存器中内容增1

INCCX

;CX寄存器中内容增1INCBYTEPRR[BX];内存字节单元内容增1INCWORDPTR[BX];内存字单元内容增1

其中,PTR为类型说明符,前面加BYTE说明操作数类型为字节,加WORD则说明操作数类型为字。计算机硬件及网络微机原理与接口技术全文共57页,当前为第30页。2023/6/119:4531§3-38086的指令系统

——算术运算指令⑷AAA加法的ASCII调整指令(ASCIIAdjustforAddition)

指令格式:AAA

指令功能:在用ADD或ADC指令对两个非压缩十进制数或ASCII码表示的十进制数作加法后,运算结果已存在AL中,用此指令将AL寄存器中的运算结果调整为一位非压缩十进制数,仍保留在AL中。如果AF=1,表示向高位有进位,则进到AH寄存器中。(注:非压缩十进制数的高4位为全0,低4位为十进制数字0~9。例如,将9表示成00001001)调整过程:若AL低4位>9或AF=1

则:①AL←AL十6②用与操作(∧)将AL高4位清0③AF置1,CF置1,AH←AH十l

否则,仅将AL寄存器的高4位清0。计算机硬件及网络微机原理与接口技术全文共57页,当前为第31页。2023/6/119:4532§3-38086的指令系统

——算术运算指令例若AL=BCD9,BL=BCD5,求两数之和。解:设AH=0,则运算过程如下:

ASCII码表示的十进制数,高半字节均为3,运算时需用AND指令将它屏蔽。只要使用AAA指令,可以不必屏蔽高半字节,便能在AX中得到一个正确的非压缩十进制数。ADDAL,BL;00001001…9;+00000101…5

AAA;00001110…低4为>9;+00000110…加6调整;00010100

;^00001111…清高4位;00000100…AL=4

;CF=1,AF=1,AH=1;结果为AX=0104H,表示非压缩十进制数14

计算机硬件及网络微机原理与接口技术全文共57页,当前为第32页。2023/6/119:4533§3-38086的指令系统

——算术运算指令例求ASCII码表示的数9(39H)与5(35H)之和。

设AH=0,则运算过程如下:

在AAA指令后加上一条“或”指令ORAX,3030H,便使AX中的结果变成了ACSII码3134H。MOVAL,‘9’;AL=39HMOVBL,‘5’;BL=35HADDAL,BL;00111001…’9’;+00110101…’5’AAA;01101110…低4为>9;+00000110…加6调整;01110100

;^00001111…清高4位;00000100…AL=4

;CF=1,AF=1,AH=1;结果为AX=0104H,表示非压缩十进制数14

计算机硬件及网络微机原理与接口技术全文共57页,当前为第33页。2023/6/119:4534§3-38086的指令系统

——算术运算指令⑸DAA加法的十进制调整指令(DecimalAdjustforAddition)

指令格式:DAA

指令功能:将两个压缩BCD数相加后的结果调整为正确的压缩BCD数。注意:相加后的结果必须在AL中,才能使用DAA指令。调整过程:①若AL的低4位>9或AF=1,则AL←AL十6,对低4位进行调整;②若此时AL的高4位>9或CF=1,则AL←AL十60H,对高4位进行调整,并使CF置1,否则CF置0。计算机硬件及网络微机原理与接口技术全文共57页,当前为第34页。2023/6/119:4535§3-38086的指令系统

——算术运算指令例若AL=BCD88,BL=BCD49,求两数之和。解运算过程为:MOVAL,88H;AL=88HMOVBL,49H;BL=49HADDAL,BL;10001000…88;+01001001…49DAA;11010001…AF=1;+00000110…加6调整;11010111…调整后高半字节>9

;+01100000…加60H调整;00110111…结果为AL=BCD37,CF=1

计算机硬件及网络微机原理与接口技术全文共57页,当前为第35页。2023/6/119:4536§3-38086的指令系统

——算术运算指令2.减法指令(Subtration)

⑴SUB减法指令(Subraction)

指令格式:SUB目的,源指令功能:目的←目的-源

SUBAX,BX ;AX←AX-BXSUBDX,1850H;DX←DX-1850HSUBBL,[BX] ;BL中内容减去物理地址=DS:(BX)处的字节,结果存入BL

⑵SBB带借位的减法指令(SubtractwithBorrow)

指令格式:SBB目的,源指令功能:目的←目的-源-CF(SBB主要用于多字节减法中)例

SBBAL,CL

;AL←AL-CL-CF计算机硬件及网络微机原理与接口技术全文共57页,当前为第36页。2023/6/119:4537§3-38086的指令系统

——算术运算指令⑶DEC减量指令(Decrement)

指令格式:DEC目的指令功能:目的←目的-l

DECBX ;BX←BX-1DECWORDPTR[BP] ;堆栈段中位于[BP]偏置处的字减1⑷NEG取负指令(Negate)指令格式:NEG目的指令功能:目的←0-目的,即对目的操作数取负

NEGAX ;将AX中的数取负

NEGBYTEPTR[BX];对数据段中位于[BX]偏置处的字节取负

⑸CMP比较指令(Compare)

指令格式:CMP目的,源指令功能:目的-源,结果不回送到目的操作数中,仅反映在标志位上。用途:用在比较两个数大小又不破坏原操作数的场合。计算机硬件及网络微机原理与接口技术全文共57页,当前为第37页。2023/6/119:4538§3-38086的指令系统

——算术运算指令减法指令小结:(上述五种指令都做减法运算)①对于双操作数指令(SUB、SBB、CMP):▲源操作数可以是寄存器、存储器或立即数;▲目的操作数可以是寄存器、存储器,但不能为立即数;▲两个操作数不能同时为存储器。②对于单操作数指令(DEC、NEG):▲目的操作数可以是寄存器、存储器,但不能为立即数;▲如果是存储器操作数,还必须说明其类型是字节还是字。③运算之后,除DEC指令不影响CF标志外,其它均影响OF、SF、ZF、AF、PF和CF标志。④在减法操作后,如果源操作数大于目的操作数,需要借位时,进位/借位标志CF将被置1。

计算机硬件及网络微机原理与接口技术全文共57页,当前为第38页。2023/6/119:4539§3-38086的指令系统

——算术运算指令

设AL=10110001B,DL=01001010B,求AL-DL。解:SUBAL,DL;与加法操作一样,对结果的解释取决于参与运算的数的性质,运算过程如下:

二进制减法当成无符号数当成带符号数

10110001177-79

-01001010-74-)+7401100111103+103

运算后标志位ZF=0,AF=1,CF=0,SF=0,PF=0,OF=1。讨论:▲两数为无符号数:表示177与74的差是103。CF=0表示没有借位,SF和OF无意义。▲两数为带符号数:表示-79-(+74),结果应为-153。但结果却为正数(103),这是由于-153溢出造成的。此时,SF和OF有重要意义。

计算机硬件及网络微机原理与接口技术全文共57页,当前为第39页。2023/6/119:4540§3-38086的指令系统

——算术运算指令⑹AAS减法的ASCII调整指令(ASCIIAdjustforSubtraction)

指令格式:AAS

指令功能:将AL寄存器中的运算结果调整为正确的非压缩十进制数之差,仍保留在AL中。使用前提:用SUB或SBB指令对两个非压缩十进制数或ASCII码表示的十进制数作减法,运算结果已存在AL。调整过程:若AL寄存器的低4位>9或AF=1,

则:①AL←AL-6,AF置1

②将AL寄存器高4位清零

③AH←AH-l,CF置l

否则,不需要调整计算机硬件及网络微机原理与接口技术全文共57页,当前为第40页。2023/6/119:4541§3-38086的指令系统

——算术运算指令⑺DAS减法的十进制调整指令(DecimalAdjustforSubtracion)

指令格式:DAS

指令功能:将AL中两个压缩BCD数相减后的结果调整为正确的压缩BCD数。高4位和低4位分别进行调整。使用前提:在两个压缩十进制数用SUB或SBB相减后,结果在AL中。调整过程:

①如果AL寄存器的低4位>9或AF=1

则:AL←AL-6,AF置1

②如果此时AL高半字节>9或标志位CF=l

则:AL←AL-60H,CF置1计算机硬件及网络微机原理与接口技术全文共57页,当前为第41页。2023/6/119:4542§3-38086的指令系统

——算术运算指令

设AL=BCD56,CL=BCD98,求两数之差。解:运算过程如下:SUBAL,CL;01010110…BCD56;-10011000…BCD98DAS;10111110…低4位>9,CF=AF=1;-00000110…减6调整;10111000…调整后高半字节>9

;+01100000…减60H调整;01011000…BCD58,CF=1

;结果为AL=BCD58,CF=1,表示右借位计算机硬件及网络微机原理与接口技术全文共57页,当前为第42页。2023/6/119:4543§3-38086的指令系统

——算术运算指令

3.乘法指令(Multiply)⑴MUL无符号数乘法指令(Multiply)

指令格式:MUL源指令功能:把源操作数和累加器中的数都当成无符号数,然后将两个数相乘,操作数可以是字节或字。

▲源操作数是一个字节:原操作数与累加器AL中的内容相乘,乘积为双倍长的16位数,高8位送到AH,低8位送AL。即

AX←AL*源。

▲源操作数是一个字:原操作数与累加器AX的内容相乘,结果为32位数,高位字放在DX寄存器中,低位字放在AX寄存器中。即

(DX,AX)←AX*源操作数要求:可以是寄存器、存储单元,但不能是立即数;源操作数是存储单元时,必须在操作数前加B或W说明是字节还是字。

计算机硬件及网络微机原理与接口技术全文共57页,当前为第43页。2023/6/119:4544§3-38086的指令系统

——算术运算指令

MULDL ;AX←AL*DLMULCX;(DX,AX)←AX*CXMULB[SI] ;AX←AL*(内存中某字节),B说明字节乘法

MULW[BX];(DX,AX)←AX*(内存中某字),W说明字乘法

注意:▲MUL指令执行后影响CF和OF标志。如果结果的高半部分(字节操作为AH、字操作为DX)不为零,表明其内容是结果的有效位,则CF和OF均置1。否则,CF和OF均清0。

据此可检测并去除结果中的无效前导零。▲乘法指令使AF、PF、SF和ZF的状态不定。

设AL=55H,BL=14H,计算它们的积。

解:MULBL

结果:①AX=06A4H。②由于AH=06H≠0,高位部分有效,所以置CF=1,OF=1。计算机硬件及网络微机原理与接口技术全文共57页,当前为第44页。2023/6/119:4545§3-38086的指令系统

——算术运算指令

例试计算FFH×FFH。解:用二进制表示成如下形式:

11111111×111111111111111000000001▲作为无符号数:表示255×255=65025,结果正确。▲作为带符号数:表示(一1)×(一1)=一511,显然结果不正确。▲用MUL指令作带符号数的乘法,会得到错误的结果,必须用IMUL指令,才能使(一1)×(一1)得到正确的结果0000000000000001。

计算机硬件及网络微机原理与接口技术全文共57页,当前为第45页。2023/6/119:4546§3-38086的指令系统

——算术运算指令⑵IMUL整数乘法指令(IntegerMultiply)

指令格式:IMUL源指令功能:把源操作数和累加器中的数都作为带符号数,进行相乘。

▲存放结果的方式与MUL相同:源操作数为字节:与AL相乘,双倍长结果送到AX中;源操作数为字:与AX相乘,双倍长结果送到DX和AX中,最后给乘积赋予正确的符号。▲对标志位的影响:乘积的高半部分不是低半部分的符号扩展(不是全0或全1),则高位部分为有效位,表示它是积的一部分,于是置CF=OF=1;结果的高半部分为全0或全1,表明它仅包含了符号位,那么使CF=OF=0。AF、PF、SF和ZF不定。计算机硬件及网络微机原理与接口技术全文共57页,当前为第46页。2023/6/119:4547§3-38086的指令系统

——算术运算指令⑶AAM乘法的ASCII调整指令(ASCIIAdjustforMultiply)

指令格式:AAM

指令功能:对AL中的两个非压缩十进制数相乘的乘积进行十进制数的调整,在AX中得到正确的非压缩十进制数的乘积,高位在AH中,低位在AL中。调整过程:把AL寄存器内容除以10,商放在AH中,余数在AL中。即:AH←AL/10所得的商AL←AH/10所得的余数

注意:▲两个ASCII码数相乘之前,先屏蔽掉每个数字的高半字节,使每个字节包含一个非压缩十进制数(BCD数),再用MUL指令相乘,乘积放到AL寄存器中,然后用AAM指令进行调整。▲标志位的影响:影响ZF、SF和PF,但AF、CF和OF无定义。▲8086的指令系统中,十进制乘法运算不允许采用压缩十进制数,故调整指令仅此一条。

计算机硬件及网络微机原理与接口技术全文共57页,当前为第47页。2023/6/119:4548§3-38086的指令系统

——算术运算指令例求两个非压缩十进制数09和06之乘积。

解:MOVAL,09H ;置初值

MOVBL,06HMULBL ;AL09与06之乘积36HAAM ;调整得AH=05H(十位),AL=04H(个位)

结果:AX=0504H,即BCD数54。

例如果AL和BL中分别存放9和6的ASCII码,求两数之积。解:用以下指令实现:

ANDAL,0FH ;屏蔽高半字节

ANDBL,0FHMULBL ;相乘

AAM ;调整如要将结果转换成ASCII码,可用指令ORAX,3030H实现,使

AX=3534H。计算机硬件及网络微机原理与接口技术全文共57页,当前为第48页。2023/6/119:4549§3-38086的指令系统

——算术运算指令

4.除法指令(Division)⑴DIV无符号数除法指令(Division,unsigned)

指令格式:DIV源指令功能:对两个无符号二进制数进行除法操作。

▲源操作数为字节:16位被除数必须放在AX中,8位除数为源操作数。

AL←AX/源(字节)的商

AH←AX/源(字节)的余数

若被除数只有8位,必须把它放在AL中,并将AH清0。▲源操作数为字:32位被除数在(DX,AX)中,16位除数作源操作数。

AX←(DX,AX)/源(字)的商

DX←(DX,AX)/源(字)的余数

若被除数、除数都是16位,则将16位被除数送到AX中,再将DX清0。

注意:▲源操作数可以是寄存器、存储单元;▲DIV指令执行后,所有标志位均无定义。

计算机硬件及网络微机原理与接口技术全文共57页,当前为第49页。2023/6/119:4550§3-38086的指令系统

——算术运算指令⑵IDIV整数除法指令(IntegerDivision)

指令格式:IDIV源指令功能:对两个带符号二进制数进行除法操作(也称为带符号数除法)

注意:

▲操作与DIV相同;▲商和余数都是带符号数,且规定余数的符号和被除数的相同;▲指令执行后,所有标志位均无定义。▲无论对(DIV)还是(IDIV),都要注意溢出问题:字节操作时:被除数的高8位绝对值大于除数的绝对值,则产生溢出。(对于无符号数,允许最大商为FFH;对于带符号数,允许商的范围为-127~+127,或-81H~+7FH);字操作时:被除数的高16位绝对值大于除数的绝对值,则产生溢出。(对于无符号数,允许最大商为FFFFH;对于带符号数,允许商的范围为-32767~+32767,或-8001H~7FFFH)。计算机硬件及网络微机原理与接口技术全文共57页,当前为第50页。2023/6/119:4551§3-38086的指令系统

——算术运算指令▲带符号数除法指令,字节操作时要求被除数为16位,字操作时要求被除数为32位,如果被除数不满足这个条件,不能简单地将高位置0,而应该用符号扩展指令(SignExtension)将被除数转换成除法指令所要求的格式。例两个无符号数7A86H和04H相除,商应为多少?解:MOVAX,7A86HMOVBL,04HDIVBL结果:①正确的商应为1EA1H。②由于BL中的除数04H为字节,被除数为字,商1EA1H大于AL中能存放的最大无符号数FFH,产生除法错误中断。计算机硬件及网络微机原理与接口技术全文共57页,当前为第51页。2023/6/119:4552§3-38086的指令系统

温馨提示

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

评论

0/150

提交评论