上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
ASCII--BCD码运算调整指令
作者:未知 申领版权
2010年12月12日 共有 1349 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    ASCII--BCD码运算调整指令
    前面介绍的算术运算指令都是针对二进制数进行操作的指令,但对绝大多数人来说,十进制是最简单、熟悉的。为了方便按十进制数进行算术运算,指令系统专门提供了一组十进制运算调整指令。
    虽然人们会觉得按十进制进行算术运算很自然,但计算机要化更多的时间来完成相应操作。在通常情况下,这组指令很少被程序员运用在实际的程序之中。所以,这组指令的使用率较低,可以根据需要有选择性地学习。
    1、ASCII码加调整指令AAA(Ascii Adjust After Addition)
    该指令是用于调整AL之值,该值是二个ASCII码字节相加之和。具体的调整规则如下:
    、若AL的低四位大于9,或标志位AF=1,则,AH=AH 1,AL=AL 6,并置AF和CF为1,否则,只置AF和CF为0;
    、清除AL的高四位。
    
    
    指令的格式:AAA
    受影响的标志位:AF和CF(OF、PF、SF和ZF等都是无定义)
    例5.21 编写一段程序,完成二个15位十进制数X和Y之和,并把计算结果存入X之中。假设数据X和Y都是以字符串形式表示的。
    

解:
    
 
    

    
X
    
db  "456407983123186"
    
;任意假设二个15位的大数
    
Y
    
db  "326676709587211"
    

    
CLC
    
MOV
    
SI, 14
    
;用变址寄存器SI来从字符串的后面向前访问
    
MOV
    
CX, 15
    
;因为它们是二个15位十进制数
    
loop1:
    
MOV
    
AL, X[SI]
    
ADC
    
AL, Y[SI]
    
;把被加数加上
    
AAA
    
MOV
    
X[SI], AL
    
DEC
    
SI
    
LOOP
    
loop1
    
;15位十进制数相加完毕
    
LEA
    
BX, X
    
;下面5条指令是把X中的数据变成对应的字符
    
MOV
    
CX, 15
    
loop2:
    
ADD
    
byte ptr [BX], '0'
    
INC
    
BX
    
LOOP
    
loop2
    

    

从上例可以看出,其实任意位的十进制数也都是可以的,只要改变CX的值即可。
    2、ASCII码减调整指令AAS(Ascii Adjust After Subtraction)
    该指令是用于调整AL之值,该值是二个ASCII码字节相减之差。具体的调整规则如下:
    、若AL的低四位大于9,或标志位CF=1,则,AH=AH-1,AL=AL-6,并置AF和CF为1,否则,只置AF和CF为0;
    、清除AL的高四位。
    指令的格式:AAS
    受影响的标志位:AF和CF(OF、PF、SF和ZF等都是无定义)
    
    
    3、ASCII码乘调整指令AAM(Ascii Adjust After Multiplication)
    该指令是用于调整寄存器AL之值,该值是由二个单BCD码字节用无符号乘指令MUL所得的积。其调整规则如下:
    AH←AL/10(商),AL←AL%10(余数)
    指令的格式:AAM
    受影响的标志位:PF、SF和ZF(AF、CF和OF等都是无定义)
    例如:
    MOV  AL, 9
    MOV  BL, 8
    MUL  BL              ;AL=72D
    AAM                  ;AH=7, AL=2
    4、ASCII码除调整指令AAD(Ascii Adjust After Division)
    该指令是在作除法前用于调整寄存器AH和AL之值,它是把二个寄存器中单BCD码组成一个十进制数值,为下面的除法作准备的。其调整规则如下:
    AL←AH*10 AL,AH←0
    指令的格式:AAD
    受影响的标志位:PF、SF和ZF(AF、CF和OF等都是无定义)
    例如:
    MOV  AX, 0502H
    MOV  BL, 10D
    AAD                  ;AH=0, AL=52D
    DIV   BL              ;AH=2(余数), AL=5(商)
    
    5、十进制数加调整指令DAA(Decimal Adjust After Addition)
    该指令是用于调整AL的值,该值是由指令ADD或ADC运算二个压缩型BCD码所得到的结果。压缩型BCD码是一个字节存放二个BCD码,低四位和高四位都是一个BCD码。
    其调整规则如下:
    、如果AL的低四位大于9,或标志位AF=1,那么,AL=AL 6,并置AF=1;
    、如果AL的高四位大于9,或CF=1,那么,AL=AL 60H,并置CF=1;
    、如果以上两点都不成立,则,清除标志位AF和CF。
    经过调整后,AL的值仍是压缩型BCD码,即:二个压缩型BCD码相加,并进行调整后,得到的结果还是压缩型BCD码。
    指令的格式:DAA
    受影响的标志位:AF、CF、PF、SF和ZF(OF无定义)
    例如:
    MOV  AL, 43H
    MOV  BL, 29H
    ADD  AL, BL          ;AL=6BH,其不是压缩型的BCD码,因为低四位'B'不是BCD码
    DAA                  ;调整后,AL=72H,这是压缩型的BCD码,也有:43 29=72
    6、十进制数减调整指令DAS(Decimal Adjust After Subtraction)
    该指令也是用于调整AL的值,该值是由指令SUB或SBB运算二个压缩型BCD码所得到的结果。其调整规则如下:
    、如果AL的低四位大于9,或标志位AF=1,那么,AL=AL-6,并置AF=1;
    、如果AL的高四位大于9,或CF=1,那么,AL=AL-60H,并置CF=1;
    、如果以上两点都不成立,则,清除标志位AF和CF。
    经过调整后,AL的值仍是压缩型BCD码,即:二个压缩型BCD码相减,并进行调整后,得到的结果还是压缩型BCD码。
    指令的格式:DAS
    受影响的标志位: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
    
    5.2.13 处理器指令
    处理器指令是一组控制CPU工作方式的指令。这组指令的使用频率不高。
    1、空操作指令NOP(No Operation Instruction)
    该指令没有的显式操作数,主要起延迟下一条指令的执行。通常用执行指令“XCHG AX, AX”来代表它的执行。NOP指令的执行不影响任何标志位。
    指令的格式:NOP
    2、等待指令WAIT(Put Processor in Wait State Instruction)
    该指令使CPU处于等待状态,直到协处理器(Coprocessor)完成运算,并用一个重启信号唤醒CPU为止。该指令的执行不影响任何标志位。
    指令的格式:WAIT
    3、暂停指令HLT(Enter Halt State Instruction)
    在等待中断信号时,该指令使CPU处于暂停工作状态,CS:IP指向下一条待执行的指令。当产生了中断信号,CPU把CS和IP压栈,并转入中断处理程序。在中断处理程序执行完后,中断返回指令IRET弹出IP和CS,并唤醒CPU执行下条指令。
    指令的格式:HLT
    指令的执行不影响任何标志位。
    4、封锁数据指令LOCK(Lock Bus Instruction)
    该指令是一个前缀指令形式,在其后面跟一个具体的操作指令。LOCK指令可以保证是在其后指令执行过程中,禁止协处理器修改数据总线上的数据,起到独占总线的作用。该指令的执行不影响任何标志位。
    指令的格式:LOCK INSTRUCTION
    

 

相关新闻

testtest
上善制度的炼成
新时代呼唤管理理论创新——大卫�梯斯与动态能力理论
创业的不变逻辑
创新管理需要回答的5个问题
十一、弥离
十、转院
九、生机
八、传染
七、求血

您可能对这些感兴趣  

干货分享|10本最受国外孩子喜爱的英文词典——上
从孩子的表现看父母的缺点!请家长对号入座,看看你是哪一类?
20条制作PPT的视觉原则
培训简史:培训者必知的历史轨迹
广田丰管理培训生人才培养调查报告
第4讲 作为上司的职业经理
第3讲 作为同事的职业经理
第2讲 作为下属的职业经理
第1讲 培养经理人的管理素养
酒店前台新员工上岗培训计划

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》