8086指令总结
8086指令集机器码

8086指令集机器码
2. ADD指令(将两个数相加并将结果存储在目标位置): - 寄存器相加: 机器码:01 D1(例如,将ECX寄存器的值与EDX寄存器的值相加) - 立即数与寄存器相加: 机器码:83 C0 05(例如,将EAX寄存器的值与立即数05相加)
3. JMP指令(无条件跳转到指定的地址): - 相对短跳转: 机器码:EB rel8(例如,EB 05,跳转到相对偏移量为05的地址) - 相对长跳转: 机器码:E9 rel16(例如,E9 1234,跳转到相对偏移量为1234的地址)
8086指令集机器码
8086指令集是Intel 8086处理器的指令集架构,它定义了一系列的机器码(二进制代码 )来执行不同的操作。下面是一些常见的8086指令及其对应的机器码示例:
1. MOV指令(将数据从一个位置移动到另一个位置): - 传送立即数到寄存器: 机器码:B8 imm16(例如,B8 1234) - 传送寄存器到寄存器: 机器码:89 C1(例如,将EAX寄存器的值传送到ECX寄存器) - 传送内存到寄存器: 机器码:8B 45 08(例如,将偏移地址为08的内存单元的值传送到EAX寄存器)
8086指令集机器码
4. INT指令(触发中断): - 软中断: 机器码:CD int8(例如,CD 1,触发21号软中断)
这是8086指令集中的示例,每个指令都有特定的操作码和操作数,机器码的格式和长度 也会有所不同。如果需要查找特定指令的机器码,可以参考8086处理器的文档或相关资料。
8086汇编指令大全.

不允许寄存器或存储单元到除CS外的段寄存器
2入栈(出栈指令PUSH (POP
注意:
PUSH操作数不能是“立即数” POP操作数不能是段寄存器
CS
不影响标志位
先进后出
单操作符
3交换指令XCHG
注意:
只允许寄存器与存储单元之间的交换
不影响标志位
4换码指令XLAT
5地址传送指令LEA :偏移地址
ZF=0
SF符号标志位
OF溢出标志位
DF方向标志位
IF中断允许位IF=1时响应外部中断
TF跟踪标志位
操作数:[目的操作数(OPD ,源操作数(OPS ] ;立即操作数,寄存器操作数,存储器操作数。寻址方式:
1寄存器寻址例:INC AX ; MOV AX , BX
2寄存器间接寻址(寄存器只能是BX , DI , SI , BP ; [PA=(BX、DI、SI +DS》4或BP+SS》4]
6数据段指针送寄存器LDS :低地址的字送指定的通用寄存器(SI、高地址的字
送DS
7附加段指针送寄存器指令LES :与LDS相似,低地址的字送通用寄存器(DI、高
地址送ES
上三指令不影响标志位
8标志寄存器传送指令
LAHF :标志寄存器低八位送
AH
SAHF :AH送标志寄存器低八位
PUSHF :标志寄存器压入堆栈
标志寄存器:9个有效位,分6个状态寄存器和3个控制寄存器
CF当执行一个加法(减法使最高位产生进位(借位时CF=1否则
CF=0
PF指令执行的结果低8位有偶数个一时, CF=1否则
CF=0
AF当执行一个加法(减法使运算结果低4位向高4位有进位(借位时AF=1否则
8086汇编指令表

8086汇编指令表MOV MOV DST,SRCDST≠CS、IP和imm不影响标志位MOV[9AF0H],ALMOVS MOVS mem, memMOVSB/W不影响标志位字符串传送ES:DI←(DS:SI)SI←(SI)(+/-)1DI←(DI)(+/-)1MOVSES:BYTEPTR[DI],DS:[SI]MUL MUL r/m8 设置CF OFS Z A P无法预测无符号乘法:AX←AL*r/m8 MUL CL MUL r/m16 无符号乘法:DX:AX←AX*r/m16 MUL CXNEG NEG reg/mem CF OF SFZF AF PF求补:取反加一0-(DST)NEG CLNOP NOP 不影响空操作NOP NOT NOT reg/mem 不影响按位取反NOT CLOR 同AND PF SF ZFCF=OF=0逻辑或OR AL,0FH(不变\置1)OUT OUT imm8,AL/AX/EAX 不影响标志位将AL/AX/EAX输出到imm8指定端口OUT 0FFH,AL OUT DX,AL/AX/EAX 将AL/AX/EAX输出到DX指定的端口OUT DX,ALPOP POP DSTDST!=imm & CS不影响标志位DST←((SP)+1,(SP))SP←(SP)+2POP WORDPtr [87EAH]POPF POPF 设置所有标志位从堆栈中弹出16位标志寄存器POPFPUSH PUSH SRC8086 SRC!=imm不影响标志位SP<--(SP)-2((SP)+1,(SP))←(SRC) [SP循环]PUSH WORDPtr [87EAH]PUSHF PUSHF 不影响压栈16位标志寄存器PUSHF RCL 同SHL 同ROL带进位循环左移RCL AL,1RCR 同SHL 同ROL带进位循环右移RCR AL,1ROL 同SHL 移一位后符号位改变则OF=1 循环左移:ROL AL,1ROR 同SHL 同ROL循环右移:ROR AL,1REP REP String operation 不影响标志位CX=0则终止---CX←(CX)-1---串操作---SI/DI增量REPZ REPE REPE String operationAF CF OFPF SF ZFCX=0||ZF=0则终止---CX←(CX)-1---串比较---SI/DI增量REPNZ REPNE REPNE String operationAF CF OFPF SF ZFCX=0||ZF=1则终止---CX←(CX)-1---串比较---SI/DI增量RET RET 恢复压栈标志位POP IP[CS]子过程返回(Near)/(Far) RET RET imm16 子过程返回后SP←(SP)+imm16 RET 08SAHF SAHF SF ZF AF PFCF(SF:ZF:0:AF:0:PF:1:CF)←AH SAHFSAL 同SHL 移入CFOF PF SF ZF算术左移:[所有移位]如果操作数符号位改变,则OF=1(CL≠1则OF无定义)SAL AL,1SAR 同SHL 移入CFOF PF SF ZF 算术右移SAR AL,1SHL SHL reg/mem, 1SHL reg/mem, CL移入CFOF PF SF ZF 逻辑左移SHL AL,1SHL AL,CLSHR 同SHL 移入CFOF PF SF ZF 逻辑右移SHR AL,1SBB 同SUB AF CF OFSF PF ZF带借位减法(CF)DST←(DST)-(SRC)-(CF)SCAS SCAS memSCASB/WOF SF ZFAF PF CF扫描字符串(ES:DI)-(AL/AX)DI←(DI)(+/-)1STC STC CF=1 进位标志CF置1 STC STD Std DF=1 方向标志DF置1(地址减量) STD STI STI IF=1 中断标志IF置1(开中断) STISTOS STOS memSTOSB不影响标志位存入串(ES:DI)←(AL/AX)DI←(DI)(+/-)1SUB SUB reg/mem, imm/regSUB reg, memAF CF OFSF PF ZF减法SUB BYTE Ptr[87EAH], 39TEST 同AND PF SF ZFCF=OF=0逻辑与测试,但是不改变目的操作数,只设置相关标志位TEST AL, 1FHWAIT WAIT 不影响等待,检查非屏蔽浮点异常WAITXCHG XCHG OPR1,OPR2reg-reg\reg-mem不影响标志位目的操作数和源操作数的值交换操作数不允许为段寄存器XCHG AX,BXXLAT XLAT [TABLE] 不影响标志位LEA BX, TABLE;表首址给BXMOV AL, 4;待转换内容到ALAL←((BX)+(AL))XLATXOR 同AND PF SF ZFCF=OF=0逻辑异或XOR AL,0FH(不变\反)。
8086指令系统总结

8086指令系统总结8086是一种x86架构的微处理器,由Intel公司于1978年推出。
它是16位的,拥有20位的物理寻址能力,可以访问1MB的内存空间。
8086指令系统是其所支持的一系列指令集合,下面将对8086指令系统进行详细总结。
数据传输指令是8086指令系统中的基础指令之一,用于将数据从一个位置传输到另一个位置。
其中包括mov指令、xchg指令、push指令和pop指令等。
mov指令用于将数据从一个存储位置复制到另一个存储位置;xchg指令用于交换两个存储位置中的数据;push指令用于将数据压入栈顶;pop指令用于将栈顶的数据弹出。
算术运算指令是用于进行各种算术运算的指令。
8086支持包括加法、减法、乘法和除法等多种算术运算指令。
例如,add指令用于将两个操作数相加,sub指令用于将第二个操作数从第一个操作数中减去,mul指令用于将两个操作数相乘,div指令用于将第一个操作数除以第一个操作数,并将结果保存在指定的寄存器中。
逻辑运算指令用于进行逻辑运算,包括与、或、非、异或等运算。
例如,and指令用于对两个操作数进行按位与运算,or指令用于对两个操作数进行按位或运算,not指令用于对一个操作数进行按位非运算,xor指令用于对两个操作数进行按位异或运算。
控制转移指令用于控制程序的执行流程。
包括无条件转移指令、条件转移指令和循环指令。
无条件转移指令用于无条件地跳转到指定的地址,例如jmp指令;条件转移指令用于根据一些条件是否成立来进行跳转,例如je指令(跳转到指定地址,如果上一次比较操作相等);循环指令用于循环执行指定的指令块,例如loop指令。
I/O指令用于进行输入输出操作,包括从外部设备读取数据和将数据写入外部设备。
例如,in指令用于将输入端口的数据读取到指定的寄存器中,out指令用于将指定的寄存器中的数据写入到输出端口。
此外,8086还支持一些特殊的指令,如访问标志寄存器的指令,控制指令(如hlt指令、nop指令)和字符串指令(如movsb指令、cmpsb指令)等。
8086汇编指令

HLT 处理器暂停, 直到出现中断或复位信号才继续. O MN|ea.O
WAIT 当芯片引线TEST为高电平时使CPU进入等待状态. &ET PYf %#
ESC 转换到外处理器. Kl+4 A} Uo
LOCK 封锁总线. %'[ pucEF
NOP 空操作. bn"z&g
POPD 32位标志出栈. @A6 iY
二、算术运算指令 J 299 mgB
ADD 加法. (RI)<zaK ;
ADC 带进位加法. ~+ {*KPiD
INC 加 1. oO;L l? ~
AAA 加法的ASCII码调整. At@0G\^
DAA 加法的十进制调整. '| g sm O
STC 置进位标志位. y O?52YO
CLC 清进位标志位. *Ja,3Q q
CMC 进位标志取反. J~rjI 24
STD 置方向标志位. .2 ST Bh.;
CLD 清方向标志位. G X>T~i\f8
STI 置中断允许位. t M{U6 k
CLI 清中断允许位. z`rW2UO#a`
JO 溢出转移. PW -s F
JP/JPE 奇偶性为偶数时转移. ,,V uv n
JS 符号位为 "1" 时转移. E J Ta ~
3>循环控制指令(短转移) aDX 4 }`u
LOOP CX不为零时循环. I, ?!N zB
LOOPE/LOOPZ CX不为零且标志Z=1时循环. ; 5!8LmZ0#
XADD 先交换再累加.( 结果在第一个操作数里 ) PK +sGV
8086CPU指令和伪指令(中英文全解)

8086CPU指令和寄存器英文全称。
一、数据传送指令比如,mov(move)、push、pop、pushf(push flags)、popf(pop flags)、xchg(exchange)等都是数据传送指令,这些指令实现寄存器和内存、寄存器和寄存器之间的单个数据传送。
二、算术运算指令比如,add、sub(substract)、adc(add with carry)、sbb(substract with borrow)、inc (increase)、dec(decrease)、cmp(compare)、imul(integer multiplication)、idiv (integer divide)、aaa(ASCII add with adjust)等都是算术运算指令,这些指令实现寄存器和内存中的数据运算。
它们的执行结果影响标志寄存器的sf、zf、of、cf、pf、af位。
三、逻辑指令比如,and、or、not、xor(exclusive or)、test、shl(shift logic left)、shr(shift logic right)、sal(shift arithmetic left)、sar(shift arithmetic right)、rol(rotate left)、ror(rotate right)、rcl(rotate left through carry)、rcr(rotate right through carry)等都是逻辑指令。
除了not 指令外,它们的执行结果都影响标志寄存器的相关标志位。
四、转移指令可以修改IP,或同时修改CS和IP的指令统称为转移指令。
转移指令分为一下几类。
(1)无条件转移指令,比如,jmp(jump);(2)条件转移指令,比如,jcxz(jump if CX is zero)、je(jump if equal)、jb(jump if below)、ja(jump if above)、jnb(jump if not below)、jna(jump if not above)等;(3)循环指令,比如,loop;(4)过程,比如,call、ret(return)、retf(return far);(5)中断,比如,int(interrupt)、iret(interrupt return)。
8086常用指令

JMP DWORD PTR OPR:执行的操作为(IP)<-(EA);(CS)<-(EA+2)
JMP指令不影响条件码。
四、标志寄存器传送指令
LAHF:Load AH with Flags
SAHF:Store AH into Flags
PUSHF/PUSHFD:标志位进栈
POPF/POPFD:标志位出栈
五、类型转换指令
CBW:字节转为字
CWD:字转为双字
CDQ:双字转4字
BSWAP:字节交换
REP指令:格式为:REP <串处理指令>,如REP INS等。执行规则是和循环类似,当CX=0时退出重复。由于这些串处理指令都只一次处理一个单位的数据,因此一般都需要与REP指令结合起来实现批量的数据传送。
结合REP指令的串处理指令用法实例: 若mess1,mess2是data段中指定的两个字符串,其中mess1在data中,为源串;mess2在extra中,为目的串
十四、条件转移指令
对单个条件标志比较,并由结果转移
JZ(JE):当结果为0或相等则跳转。相反:JNZ(JNE);
JS:当结果为负则跳转。相反:JNS;
JO:当溢出则跳转。相反:JNO;
JP(JPE):当奇偶位为1则跳转。相反:JNP(JPO);
JB(JNAE):当低于或CF=1则转移。相反:JNB(JAE),不低于则转移;
lea di,mess2;赋予目的变址DI
mov cx,17;指定重复次数
CLD;方向标志置零(从左向右扫描)
Intel8086ASMCode汇编指令的机器码

8086指令码汇总表8086指令有汇编语言指令和指令码两种形式,汇编语言指令形式经过汇编程序处理后生成指令码形式。
通过指令码形式可帮助理解汇编语言指令格式的含义和用法。
O、8086指令码格式0B/1B 1B或2B 0B/1B 0B/1B/2B/4B 0B/1B/2B/4B 指令前缀操作码段寻址方式段偏移量参数立即数参数说明:偏移量参数和立即数参数的有无由寻址方式段决定。
一、传送类指令MOV指令REG/MEM→/←REG 100010dw mod reg r/mIMME→REG/MEM 1000111w mod 000 r/m data data if w=1 IMME→REG 1011wreg data data if w=1MEM→AX 1010000w addr-low addr-highAX→MEM 1010001w addr-low addr-highREG/MEM→段REG 10001110 mod reg r/m 8E段REG→REG/MEM 10001100 mod reg r/m 8CPUSH指令REG/MEM 11111111 mod 110 r/m FFREG 01010reg段REG 000reg110POP指令REG/MEM 10001111 mod 000 r/m 8FREG 01011reg段REG 000reg111XCHG指令REG/MEM←→REG 1000011w mod reg r/mREG←→AX 10010regXLAT指令11010111 D7LEA指令10001101 mod reg r/m 8DLDS指令11000101 mod reg r/m C5LES指令11000100 mod reg r/m C4LAHF指令10011111 9FSAHF指令10011110 9EPUSHF指令10011100 9CPOPF指令10011101 9DIN指令直接寻址1110010w port间接寻址1110110wOUT指令直接寻址1110011w port间接寻址1110111wCBW指令10011000 98CWD指令10011001 99 说明:d—0/1表示REG为源/目的操作数;w—0/1表示操作数类型为BYTE/WORD;mod、r/m—寻址方式,参见教材P56~57;IMME—立即数操作数,字段中用data表示;reg—通用REG用3位编码,段REG只用2位编码(即为0xx)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8086指令系统总结学习微处理器及其程序设计,必须掌握微处理器的指令系统。
本章以8086 微处理器为例介绍微型计算机的指令系统,包括指令格式、寻址方式和各类指令功能。
要明确各种寻址方式的区别和特点,掌握有效地址和物理地址的计算方法,要正确使用指令,掌握各类指令的功能、对标志位的影响和使用上的一些特殊限制。
能够编写小汇编程序,初步掌握汇编程序的编写和调试方法。
本章的重点难点内容是:8086 的指令格式及寻址方式,8086 的常用指令和8086 指令前缀的使用。
下面我们分别进行总结:一.8086寻址方式(1)操作数是数字,指令中立即写出数字------------立即数寻址MOV AX,1234H 解释此句意义(2)操作数是寄存器内容,指令中写出寄存器的符号---------寄存器寻址MOV AX,BX(3)操作数是存储单元内容,用括号括出存储单元有效地址-----直接寻址MOV AX,[1234H]MOV AX,ES:[1234H](4)操作数是存储单元内容,用括号括出寄存器或其表达式,寄存器或其表达式的值为存储单元有效地址-------------间接寻址MOV AH,[BX]MOV AX,ES:[SI]MOV AL,[BX+SI+5]===5[BX+SI]===5[BX][SI]二.8086指令系统1.数据传送指令(一)通用传送指令(1)MOV指令指令格式:MOV 目,源功能:将源操作数传送给目标操作数。
(2)堆栈操作指令进栈指令:PUSH格式:PUSH 源功能:将源操作数压入堆栈。
例:用堆栈指令完成上例的功能。
MOV AX,3000HMOV DS,AX ;段寄存器填充MOV SI,0100H ;基本指令执MOV DI,2000H ;行前的初值MOV CX,50NT: PUSH [SI] ;程序从这POP [DI] ;开始设计INC SIINC SIINC DIINC DILOOP NTMOV AH,4CHINT 21H(3)交换指令XCHG格式:XCHG 目,源功能:源和目标中的内容交换。
(二)累加器专用传送指令(1)输入输出指令IN,OUT输入指令格式:#1 IN AX|AL,8位端口号#2 IN AX|AL,DX功能:从外设输入数据到AX|AL寄存器。
输出指令格式:#1 OUT 8位端口号,AX|AL#2 OUT DX,AX|AL功能:将AX|AL中的数据输出到外设。
该类指令是硬件功能与软件作用的结合。
(2)查表转换指令XLAT指令格式:XLAT功能:将内存单元[BX+AL]中的内容,置入AL寄存器中。
(三)地址传送指令地址传送指令有两类:仅传送偏移地址指令及段地址与偏移地址同时传送指令。
(1)仅传送偏移地址指令:LEA指令格式:LEA 目,源功能:将源操作数的偏移地址传送给目标寄存器。
如:LEA BX,[2000H]执行后BX=2000H。
又如:LEA SI,[BX+100H]若执行前BX=1000H,执行后SI=1100H。
(2)段地址与偏移地址同时传送指令:LDS、LES指令格式:LDS 目,源LES 目,源功能:将源存储器操作数连续4个字节的内容传送给目标寄存器DS寄存器(LDS指令)或ES寄存器(LES指令)。
如:LDS BX,[2000H]执行前[2000H]=1234H;[2002H]=5678H。
执行后BX=1234H;DS=5678H又如:LDS SI,[BX+100H]若执行前BX=1000H,而[1100H]=4321H;[1102]=8765H。
执行后SI=4321H;DS=8765H。
(四)标志传送指令(1)LAHF指令指令格式:LAHF指令功能:将标致寄存器的低八位中以定义位,传送给AH寄存器中对应的位。
(2)SAHF指令指令格式:SAHF指令功能:将AH寄存器中对应的位,传送给标致寄存器的低八位中以定义位。
(3)PUSHF指令指令格式:PUSHF指令功能:将标致寄存器内容进栈。
(4)POPF指令指令格式:POPF指令功能:从栈顶弹出一个字送入标致寄存器。
2.算术运算(一)加法指令加法指令有三类:不带进位加法指令、带进位加法指令和增一指令。
它们均适合与无符号数和有符号数的加法。
对于有符号数,其结果用补码表示。
(1)不带进位的加法指令ADD指令格式:ADD 目,源指令功能:源+目,其结果放到目标,并影响标志寄存器。
如:ADD AL,50H ;(AL)+50H→AL(2)带进位的加法指令ADC指令格式:ADC 目,源指令功能:源+目+CF,其结果放到目标,并影响标志寄存器。
利用ADC指令可以实现两个多字节数的相加运算。
如:1244AFDCH+9A12458FH。
如:ADC AL,50H ;(AL)+50H+CF→AL(3)增一指令INC指令格式:INC 目指令功能:目+1,其结果放到目标,并影响标志寄存器。
(二)减法指令减法指令包含有五类:不考虑借位减法指令、考虑借位减法指令、减一指令、求补指令和比较指令。
它们均适合与无符号数和有符号数的减法。
对于有符号数,其结果用补码表示。
(1)不考虑借位减法指令SUB指令格式:SUB 目,源指令功能:目-源,其结果放到目标,并影响标志寄存器。
(2)考虑借位减法指令SBB指令格式:SBB 目,源指令功能:目-源-CF,其结果放到目标,并影响标志寄存器。
利用SBB指令可以实现两个多字节数的相减运算。
如:1244AFDCH-9A12458FH。
(3)减一指令DEC指令格式:DEC 目指令功能:目-1,其结果放到目标,并影响标志寄存器。
(4)求补指令NEG指令格式:NEG 目指令功能:0-目,其结果放到目标,并影响标志寄存器。
(5)比较指令CMP指令格式:CMP 目,源指令功能:目-源,其结果不放到目标,但设置标志寄存器。
用法:#1 对于两个无符号数的比较,根据CF标志判断两数的大小。
#2 对于两个有符号数比较大小,根据SF和OF标志位来判断两数的大小:OF和SF相同(=0或=1)则目>源;如果OF和SF相异,则源>目。
(三)乘法指令乘法指令有两类:无符号数乘法指令和有符号数乘法指令。
(1)无符号乘法指令MUL指令格式:MUL 源指令功能:(AL|AX)*源,其结果放到AX|DX:AX(2)有符号乘法指令IMUL指令格式:IMUL 源指令功能:(AL|AX)*源,其结果放到AX|DX:AX(四)除法指令8086CPU的除法指令有两类:无符号数除法指令和有符号数除法指令。
它们均是不等长除法指令。
即:被除数长度必须是除数长度的两倍。
所以,在进行除法运算前应根据除数长度将被除数变成它的两倍长度。
(1)无符号数除法指令DIV指令格式:DIV 源指令功能:AX|DX:AX/源,其结果:商放在AL|AX,余数放在AH|DX之中。
(2)有符号数除法指令IDIV指令格式:IDIV 源指令功能:AX|DX:AX/源,其结果:商放在AL|AX,余数放在AH|DX之中。
(3)将字节扩展成字的指令CBW指令格式:CBW指令功能:将AL中有符号数的符号位扩展到AH之中。
不影响标志位。
用法:一般在两字节有符号数除法前,利用该指令,将符号位进行扩展,以使两数变成不等长数。
(4)将字扩展成双字的指令CWD指令格式:CWD指令功能:将AH中有符号数的符号位扩展到DX之中。
不影响标志位。
用法:一般在执行两字长有符号数除法前,利用该指令,将符号位进行扩展,以使两数变成不等长数。
(五)BCD码运算指令BCD码有两类:组合(压缩)型BCD码和未组合(非压缩)型BCD码。
BCD码的运算相应也有两种情况。
(1)未组合BCD码加法十进制调整指令AAA指令格式:AAA指令功能:对AL中的数进行校正:在AX中产生未组合十进制数和。
如: MOV AL,7ADD AL,5AAA执行前两条后,AL=0CH,经AAA调整后,AX=0102H,CF=OF=1。
(2)组合BCD码加法十进制调整指令DAA指令格式:DAA指令功能:对AL中的数进行校正:在AL中产生组合十进制数和。
如: MOV AL,56H(BCD)ADD AL,47H(BCD)DAA执行前两条后,AL=9DH,经DAA调整后,AL=03H,CF=1。
例:多字节组合BCD码十进制相加设两数长度均为8个字节,分别存放在1000H和2000H开始的8个单元中,要求将两数相加后,结果放在2000H开始的内存区域。
MOV SI,1000HMOV DI,2000HMOV CX,8CLCL1:MOV AL,[SI]ADC AL,[DI]DAAMOV [DI], ALINC SIINC DILOOP L1MOV AH,4CHINT 21H(3)未组合BCD码减法十进制调整指令AAS指令格式:AAS指令功能:对AL中的数进行校正:在AX中产生未组合十进制数差。
如: MOV AL,"7" ;"7"为7的ASCII码SUB AL,5AAS执行前两条后,AL=32H,经AAS调整后,AL=02H。
(4)组合BCD码加减十进制调整指令DAS指令格式:DAS指令功能:对AL中的数进行校正:在AL中产生组合十进制数差。
如: MOV AL,56H(BCD)SUB AL,47H(BCD)DAS执行前两条后,AL=0FH,经DAS调整后,AL=09H,CF=1。
(5)未组合BCD码的乘法十进制调整指令AAM指令格式:AAM指令功能:对AL中的数进行校正:在AX中产生未组合十进制数积。
如: MOV AL,05H(BCD)MOV BL,06H(BCD)MUL BLAAM执行前三条后,AX=001EH,经AAM调整后,AX=0300H (BCD)。
(6)未组合BCD码的除法十进制调整指令AAD指令格式:AAD指令功能:对AX中的数进行校正:在AX中产生未组合十进制数。
如: MOV AX,0300H(BCD)AADMOV BL,06H(BCD)DIV BL执行前两条后,AX=001EH,执行DIV指令后,AX=0005H (BCD)。
3.逻辑运算逻辑指令有三类:逻辑运算指令:NOT、AND、OR、XOR及TEST移位指令:SHL、SAL、SHR和SHR循环移位指令:ROL、ROR、RCL和RCR1. 逻辑运算指令(1)求反指令NOT指令格式: NOT 目指令功能:将目标内容求反。
(2)逻辑与指令AND指令格式: AND 目,源指令功能:将目标内容同源内容按位进行逻辑与运算。
结果放在目标。
如:AND AX,00FFH其结果AH=0(被屛蔽);AL内容不变。
(3)逻辑或指令OR指令格式: OR 目,源指令功能:将目标内容同源内容按位进行逻辑或运算。
结果放在目标。
如:OR AX,00FFH其结果AH内容不变;AL=0FFH(所有位为1)。