加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

复习要点3:ASCII码与BCD码、无符号数与有符号数

(2012-04-10 21:12:04)
标签:

复习2012

分类: 微机

以下问题根据课堂辅导内容整理,请勿与考试直接关联!

练习1:试编写子程序求取AX寄存器和BX寄存器中两个有符号二进制数的绝对值的和到BX寄存器中。
          ABS   PROC
                OR AX,AX
                JNS NXT1
                NEG AX
          NXT1: OR BX,BX
                JNS NXT2
                NEG BX
          NXT2: ADD BX,AX
                RET
          ABS   ENDP

练习2:试编写子程序求取AX寄存器和BX寄存器中两个有符号二进制数的和的绝对值到BX寄存器中。
          ABS   PROC
                ADD BX,AX
                OR BX,BX
                JNS NXT1
                NEG BX
          NXT1: RET
          ABS   ENDP

 

以下问题根据百度问答内容整理,请勿与考试直接关联!

百度问题1:“将一字节压缩BCD码转换成两个ASCII字符”

问:老师以96H为例讲解时说,”把96拆开,把9变成39,把6变成36,不就变成ASC码的数了吗、?",听不懂这句话什么意思。为什么这样就变成ASC码了?

答:ASC码是一种字符编码,它是用7位二进制来表示数字、字符及一些控制符号,其规律是0的ASC码是30H,9的ASC码是39H,压缩的BCD 码是一个字节表示2位BCD码,就如题中的9和6构成的96H,即为2位BCD码,把9的BCD码转换成ASC码即为39H,6的BCD码转换成ASC码即为36H。

百度问题2:“1字节二进制数转换成3位非压缩型的BCD码”

问:请问汇编中如何将一个字节的二进制数转换成3位非压缩型的BCD码?

答:方法是求出百位、十位、个位,然后分别存到三个单元中就行了。
    设该二进制数放在AX中。最后结果放到地址为0000H,0001H,0002H的单元中。

    MOV  BL, 64H
    DIV  BL          ;除以100,商是百位存在AL中,余数在AH中
    MOV  [0000H], AL ;保存百位
    MOV  AL, AH      ;保存余数
    MOV  AH, 00H     
    MOV  BL, 0AH
    DIV  BL          ;余数除以10
    MOV  [0001H], AL ;所得的商为十位
    MOV  [0002H], AH ;余数为个位

百度问题3:“求32位有符号数的绝对值”

问:如何用汇编语言编把DX AX中放的32位有符号二进制数求绝对值并送入CX BX之中(DX、CX放高位字节)

答:

    TEST DX, 8000H   ;判断正负数
    JZ NXT           ;正数,直接保存
                     ;负数,取反加1
    NOT AX           ;取反
    NOT DX           ;取反
    ADD AX, 1        ;低位字加1
    ADC DX, 0        ;高位字带进位加0
NXT:MOV BX, AX       ;低位字送BX保存
    MOV CX, DX       ;高位字送CX保存

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有