回 帖 发 新 帖 刷新版面

主题:菜鸟求助

AAA的指令的操作:
  如果  ((AL)&0FH)>9或(AF)=1,
  则    (AL)←(AL)+6
        (AH)←(AH)+1
        (AF)←1
        (CF)←(AF)
        (AL)←((AL)&0FH)
  否则  (AL)←((AL)&0FH)
其中[u]((AL)&0FH)>9[/u],
[u](AL)←(AL)+6[/u],
[u](AL)←((AL)&0FH)[/u],
各是什么作用,主要是第1句和第3句不是很懂。
麻烦各位高手指教了,刚开始自学了,有些语句还不是很懂
[em18][em15]

回复列表 (共2个回复)

沙发

不知你用的什么教材,
简单的东西却复杂来讲

aaa 是调整 两个 未压缩BCD码 相加的和
mov ah,0
mov al, '8' ;此时 ax=0038h ,即一个未压缩十机制数
add al, '2' ;另一个未压缩十机制数 '2'(=0032h),此时 ax=0070h
aaa         ;调整ax后,此时 ax=0100h,  

8+2= 10, 十位1 在ah中,各位 0在al中

这类算术指令并不常用,看一边就忘了,忘了在看书...


板凳

((AL)&0FH)>9
     (AL)&0FH,意思是AL与0FH乘,也就是取AL的低四位。
      然后把结果与9比较,看是否大于9
(AL)←(AL)+6
      把AL的值加上6,结果返回AL
(AL)←((AL)&0FH)
      上面已讲过了,取AL的低四位,放入AL中
大概是这样的,不知道是否有错。

我来回复

您尚未登录,请登录后再回复。点此登录或注册