汇编语言AAD,DAA,DAS用法解析_汇编语言

来源:脚本之家  责任编辑:小易  

最佳答案IBM-PC汇编语言指令集数据传送指令集MOV功能:把源操作数送给目的操作数语法:MOV 目的操作数,源操作数格式:MOV r1,r2MOV r,mMOV m,rMOV r,dataXCHG功能:交换两个操作数的数据语法:XCHG格式:XCHG r1,r2 XCHG m,r XCHG r,mPUSH,POP功能:把操作数压入或取出堆栈语法:PUSH 操作数 POP 操作数格式:PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能:堆栈指令群格式:PUSHF POPF PUSHA POPALEA,LDS,LES功能:取地址至寄存器语法:LEA r,m LDS r,m LES r,mXLAT(XLATB)功能:查表指令语法:XLAT XLAT m算数运算指令ADD,ADC功能:加法指令语法:ADD OP1,OP2 ADC OP1,OP2格式:ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志:C,P,A,Z,S,OSUB,SBB功能:减法指令语法:SUB OP1,OP2 SBB OP1,OP2格式:SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data影响标志:C,P,A,Z,S,OINC,DEC功能:把OP的值加一或减一语法:INC OP DEC OP格式:INC r/m DEC r/m影响标志:P,A,Z,S,ONEG功能:将OP的符号反相(取二进制补码)语法:NEG OP格式:NEG r/m影响标志:C,P,A,Z,S,OMUL,IMUL功能:乘法指令语法:MUL OP IMUL OP格式:MUL r/m IMUL r/m影响标志:C,P,A,Z,S,O(仅IMUL会影响S标志)DIV,IDIV功能:除法指令语法:DIV OP IDIV OP格式:DIV r/m IDIV r/mCBW,CWD功能:有符号数扩展指令语法:CBW CWDAAA,AAS,AAM,AAD功能:非压BCD码运算调整指令语法:AAA AAS AAM AAD影响标志:A,C(AAA,AAS)S,Z,P(AAM,AAD)DAA,DAS功能:压缩BCD码调整指令语法:DAA DAS影响标志:C,P,A,Z,S位运算指令集AND,OR,XOR,NOT,TEST功能:执行BIT与BIT之间的逻辑运算语法:AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m影响标志:C,O,P,Z,S(其中C与O两个标志会被设为0)NOT指令不影响任何标志位SHR,SHL,SAR,SAL功能:移位指令语法:SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL影响标志:C,P,Z,S,OROR,ROL,RCR,RCL功能:循环移位指令语法:ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL影响标志:C,P,Z,S,O程序流程控制指令集CLC,STC,CMC功能:设定进位标志语法:CLC STC CMC标志位:CCLD,STD功能:设定方向标志语法:CLD STD标志位:DCLI,STI功能:设定中断标志语法:CLI STI标志位:ICMP功能:比较OP1与OP2的值语法:CMP r/m,r/m/data标志位:C,P,A,Z,OJMP功能:跳往指定地址执行语法:JMP 地址JXX功能:当特定条件成立则跳往指定地址执行语法:JXX 地址注:A:ABOVE,当C=0,Z=0时成立B:BELOW,当C=1时成立C:CARRY,当弁时成立 CXZ:CX寄存器的值为0(ZERO)时成立E:EQUAL,当Z=1时成立G:GREATER(大于),当Z=0且S=0时成立L:LESS(小于),当S不为零时成立N:NOT(相反条件),需和其它符号配合使用O:OVERFLOW,O=1时成立P:PARITY,P=1时成立PE:PARITY EVEN,P=1时成立PO:PARITY ODD,P=0时成立S:SIGN,S=1时成立Z:ZERO,Z=1时成立LOOP功能:循环指令集语法:LOOP 地址LOOPE(Z)地址 LOOPNE(Z)地址标志位:无CALL,RET功能:子程序调用,返回指令语法:CALL 地址 RET RET n标志位:无INT,IRET功能:中断调用及返回指令语法:INT n IRET标志位:在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器字符串操作指令集MOVSB,MOVSW,MOVSD功能:字符串传送指令语法:MOVSB MOVSW MOVSD标志位:无CMPSB,CMPSW,CMPSD功能:字符串比较指令语法:CMPSB CMPSW CMPSD标志位:C,P,Z,S,OSCASB,SCASW功能:字符串搜索指令语法:SCASB SCASW标志位:C,P,Z,S,OLODSB,LODSW,STOSB,STOSW功能:字符串载入或存贮指令语法:LODSB LODSW STOSB STOSW标志位:无REP,REPE,REPNE功能:重复前缀指令集语法:REP 指令S REPE 指令S REPNE 指令S标志位:依指令S而定对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。这里将简单介绍其指令类型及指令说明,如有要求给具体的指令格式及应用,请与amay联系,amay加以更新。1)数据传送指令:负责把数据、地址或立即数传送到寄存器或存储单元中。数据传送指令类型 指 令 说 明通用数据传送指令 MOV(传送)、PUSH(进栈)、POP(出栈)、XCHG(交换)累加器专用传送指令 IN(输入指令)、OUT(输入指令)地址传送指令 LEA(有效地址送寄存器)、LDS(指针送寄存器和DS)、LES(指针送寄存器和ES)标志寄存器传送指令 LAHF(标志送AH)、SAHF(AH送标志寄存器)、PUSHF(标志进栈)、POPF(标志出栈)2)算术指令:用来执行算术运算。算术指令类型 指 令 说 明加法指令 ADD(加法)、ADC(带进位加法)、INC(加1)减法指令 SUB(减法)、SBB(带借位减法)、DEC(减1)、NEG(求补)、CMP(比较)乘法指令 MUL(无符号数乘法)、IMUL(带符号数乘法)除法指令 DIV(无符号数除法)、IDIV(带符号数除法)、CBW(字节转换为字)、CWD(字转换为双字)3)逻辑指令:对字或字节执行逻辑运算。逻辑指令类型 指 令 说 明逻辑运算指令 AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR(异或)、TEST(测试)移动指令 SHL(逻辑左移)、SAL(算术左移)、SHR(逻辑右移)、SAR(算术右移)、ROL(循环左移)、ROR(循环右移)、RCL(带进位循环左移)、RCR(带进位右移)4)串处理指令:处理存放存储器里的数据串。串处理指令类型 指 令 说 明指 令 MOVS(串传送)、CMPS(串比较)、SCAS(串扫描)、LODS(从串取)、STOS(存入串)5)控制转移指令:用来控制程序的执行流程。控制转移指令类型 指 令 说 明无条件转移指令 JMP(段间和段内转移)条件转移指令 JZ(结果为0(或相等)则转移)、JS(结果为负则转移)、JNS(结果为正则转移)、JO(溢出则转移)、JNO(不溢出则转移)、JP(奇偶位为1则转移)、JNP(奇偶位为0则转移)循环指令 LOOP(循环指令)、LOOPPZ/LOOPE(当为0或相等时循环指令)、LOOPNZ/LOOPNE(当不为0或不相等时循环指令)子程序指令 CALL(调用指令)、RET(返回指令)中断指令 INT(中断)、INTO(如溢出则中断)、RIET(从中断返回)www.zgxue.com防采集请勿采集本网。

这篇文章主要介绍了汇编语言AAD,DAA,DAS用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

DAA 加法的十进制调整. SUB 减法. SBB 带借位减法. DEC 减 1. NEC 求反(以 0 减之). CMP 比较.(两操作数作减法,仅修改标志位,不回送结果). AAS 减法的ASCII码调整. DAS 减法的十进制调整. MUL 无符号乘法.

AAD 为下面的除法做准备 ,把AL 和 AH 两个单BCD码组成一个十进制数

估计你的意思是说C语言编译成汇编语言之后乘法怎么表示吧,因为在汇编中加法确实是用ADD表示的,下面给你运算符表: ADD 加法. ADC 带进位加法. INC 加 1. AAA 加法的ASCII码调整. DAA 加法的

1、AAD(调整除)

8086汇编指令手册 一、数据传输指令 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1.通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH

5.2该指令是在作除法前用于调整寄存器AH和AL之值,它是把二个寄存器中单BCD码组成一个十进制数值,其调整规则如下:

DAA:加法调整指令,当加法中结果>9或者有进位时,就要加上四位二进制与十进制之间的差值,即6,如:34H+27H,按十六进制结果就为:5BH,但这不是BCD码,故需要调整,由于后面四位大于9故要加6补偿,从而

AL←AH*10+AL,AH←0

2的4次方等于【(2*2)*2】*2 等于【(2+2)+(2+2)】+【(2+2)+(2+2)】, mov ax,2 将2送入寄存器ax。ax=2 add ax,ax 将寄存器ax中的数据送入寄存器ax。ax=4 add ax,ax 将寄存器ax中的

受影响的标志位:PF、SF和ZF(AF、CF和OF等都是无定义)

MOV AX, 0502H MOV BL, 10D AAD          ;AH=0, AL=52H DIV BL        ;AH=2(余数), AL=5(商)

2、DAA(调整加十)

该指令是用于调整AL的值,该值是由指令ADD或ADC运算二个压缩型BCD码所得到的结果。压缩型BCD码是一个字节存放二个BCD码,低四位和高四位都是一个BCD码。其调整规则如下: 如果AL的低四位大于9,或AF=1,那么,AL=AL+06H,并置AF=1; 如果AL的高四位大于9,或CF=1,那么,AL=AL+60H,并置CF=1; 如果以上两点都不成立,则,清除标志位AF和CF。

经过调整后,AL的值仍是压缩型BCD码,即:二个压缩型BCD码相加,并进行调整后,得到的结果还是压缩型BCD码。

受影响的标志位:AF、CF、PF、SF和ZF(OF无定义)

MOV AL, 43H MOV BL, 29H ADD AL, BL     ;AL=6CH,其不是压缩型的BCD码,因为低四位‘B‘不是BCD码 DAA          ;调整后,AL=72H,这是压缩型的BCD码,也有:43+29=72

3、DAS(调整减十)

该指令也是用于调整AL的值,AL是由指令SUB或SBB运算二个压缩型BCD码所得到的结果。其调整规则如下: 如果AL的低四位大于9,或AF=1,那么,AL=AL-06H,并置AF=1; 如果AL的高四位大于9,或CF=1,那么,AL=AL-60H,并置CF=1; 如果以上两点都不成立,则,清除标志位AF和CF。

经过调整后,AL的值仍是压缩型BCD码,即:二个压缩型BCD码相减,并进行调整后,得到的结果还是压缩型BCD码。

受影响的标志位:AF、CF、PF、SF和ZF(OF无定义)

MOV AL, 43H MOV BL, 29H SUB AL, BL    ;AL=1AH,其不是压缩型的BCD码,因为低四位‘A‘不是BCD码 DAS        ;调整后,AL=14H,这是压缩型的BCD码,也有:43-29=14

这些指令本身就是进行运算后,才调整的,你说的情况用AAA所得结果是一个非压缩BCD码,CF为进位内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 汇编语言入门教程阮一峰版
  • 汇编语言lea指令使用方法解析
  • 16位汇编语言寄存器及指令整理(小结)
  • 汇编语言入门教程(这一篇足矣)
  • 汇编环境搭建之如何快速安装和配置dosbox
  • arm体系下的gcc内联汇编教程详解
  • 详解如何在mac上用汇编语言写helloworld
  • 8086汇编语言nasm版本
  • 汇编语言:比较指令、跳转指令、jcc的使用
  • ios汇编入门教程之arm64汇编基础教程
  • gnu arm汇编语法原理及操作解析
  • 浅析elf转二进制允许把 binary 文件加载到任意位置
  • 汇编语言之寄存器(详细介绍)
  • 汇编程序输出“hello world”的实现
  • 汇编,AAA,AAS,AAM,AAD,DAA,DAS
  • 汇编语言指令大全,要详细的 !!!!
  • 问问汇编语言的几个问题
  • 汇编语言中十进制调整指令是如何实现的?
  • 请问易语言汇编指令的 压栈 和 传栈 和 堆栈 都是什么意思?另外求OD的一些常见英文指令都是什么意思?
  • 乘法在c语言中怎么表示?比如加法是add
  • 汇编语言指令
  • BCD码调整指令的使用规则是怎样的
  • 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
  • 汇编指令手册
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言其它相关首页汇编语言汇编语言入门教程阮一峰版汇编语言lea指令使用方法解析16位汇编语言寄存器及指令整理(小结)汇编语言入门教程(这一篇足矣)汇编环境搭建之如何快速安装和配置dosboxarm体系下的gcc内联汇编教程详解详解如何在mac上用汇编语言写helloworld8086汇编语言nasm版本汇编语言:比较指令、跳转指令、jcc的使用ios汇编入门教程之arm64汇编基础教程gnu arm汇编语法原理及操作解析浅析elf转二进制允许把 binary 文件加载到任意位置汇编语言之寄存器(详细介绍)汇编程序输出“hello world”的实现汇编语言入门教程(这一篇足矣)王爽 汇编语言学习笔记(详细)汇编语言mov指令及基本用法汇编语言lea指令使用方法解析windows10下利用dosbox和masm32搭汇编语言入门教程阮一峰版详解如何在mac上用汇编语言写helc语言asm汇编内嵌语法详解gnu arm汇编语法原理及操作解析汇编程序输出“hello world”的实c 表达式中的汇编指令汇编语言编译环境搭建过程汇编语言中的函数调用参数传递及全局与局详解汇编语言各种指令的解释与用法详解如何在mac上用汇编语言写helloworld浅析elf转二进制允许把 binary 文件加载到汇编语言中cmp指令用法笔记与总结arm体系下的gcc内联汇编教程详解汇编 jmp使用详解汇编语言软件延时1s的实现方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved