汇编语言aaa指令解析,aas指令解析 您所在的位置:网站首页 汇编db指令什么意思 汇编语言aaa指令解析,aas指令解析

汇编语言aaa指令解析,aas指令解析

2024-07-18 04:10| 来源: 网络整理| 查看: 265

aaa指令本质上是将相加后的结果拆成两个部分(拆成非压缩BCD码的形式) 下面进行举例介绍 1. ah = 0,al = 06h,bl = 09h,执行指令add al,bl得ah = 01h,al = 05h,aaa的作用就是将相加后al中的结果15拆分成两部分 (将0fh十进制为15的数字拆分成一个1和一个5,1放在ax的高位ah中,5放在ax的低位al中) 2. 看下面的汇编代码段

mov ah,0 ;ax = 0038h mov al,'8' ;'8'的ascii码值十进制为56,十六进制为0038h,所以ax = 0038h add al,'2' ;'2'的ascii码值十进制为50,十六进制为0032h,所以ax = 0032h,相加后结果为006Ah aaa ;执行aaa指令后ax = 0100h,本质上是将al低位的a进行化简,a的值为10,转化为BCD码值为01 00h or ax,3030h ;相当于or ah,30h与or al,30h操作 将高位的ah与低位的al分别进行ascii码值的转换

最终输出的值为"10",相当于将’8’与’2’进行加法运算,‘8’+‘2’ = “10” 具体算法 (1)如果al的低4位是在0到9之间,保留低4位,清除高4位,如果al的低4位在10到15之间,则通过加6,来使得低4位在0到9之间,然后再对高4位清零。 (2)如果al的低4位是在0到9之间,ah值不变,CF和AF标志清零,否则,ah=ah+1,并设置CF和AF标志。

aas指令与aaa指令类似 AAS 减法的ASCII调整指令(ASCII Adjust for Subtraction) 若AL寄存器的低4位>9或AF=1,则: (1)AL=AL-6,AF置1; (2)将AL寄存器高4位清零; (3)AH=AH-1,CF置1。 否则,不需要调整。 如下面的汇编指令 .data val1 BYTE ‘8’ val2 BYTE ‘9’ .code mov ah, 0 mov al,val1 ; AX = 0038h sub al,val2 ; AX = 00FFh aas ; AX = FF09h pushf ; 保存进位标志位 or al,30h ; AX = FF39h popf ; 恢复进位标志位 算出ax = 00ffh之后,看末尾的f, f超过值9,将f-6后值为09放入末尾的al之中 因为f减去了值6,所以打头的00需要减1 00-1=ffh,最终结果为ax = ff09h



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有