问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用汇编语言编写多字节压缩bcd码减法程序,要求显示被减数,减数及结果

发布网友 发布时间:2024-10-21 22:04

我来回答

1个回答

热心网友 时间:2024-11-18 06:03

;修改'899',和'999'的长度,即可计算任意长度的相加
;如d10  db '18929387499'
;  d12  db '18234287439'
;  补充,这是相加,你要求是相减,搞差了,减法的附在后面

dseg segment
  d10  db '899'
  len1 equ $-d10  ;注意 d10与d12长度相同,可以做不同,但比较麻烦,这里没做
  d11  db '+'
  d12  db '999'   ;长度与d10相同
  d13  db '=','$'
  d2   db len1+1 dup(0),'$'
dseg ends

assume cs:cseg, ds:dseg
cseg segment
start:
    mov ax, dseg
    mov ds, ax

    mov ah,9
    lea dx, d10
    int 21h

    lea si, d10
    lea di, d12
    lea bx, d2
    add si, len1-1 ;指向个位数位置
    add di, len1-1 ;指向个位数位置
    add bx, len1 ;指向个位数位置
    mov cx, len1 ;计算器

    clc          ;清除cf
c0:
    mov ah,0     ;清除ah
    mov al,[si]  ;取对应位置上的数字相加
    and al,0FH   ;
    mov dl,[di]  ;
    and dl,0FH   ;
    add al,dl    ;相加
    aaa          ;调整
    add al,[bx]  ;加上可能的进位
    aaa          ;再调整
    mov [bx],al  ;保存到对应的位置上
    mov [bx-1],ah;可能存在的进位,保存到对应的位置上
    dec si       ;下一位相加
    dec di
    dec bx
    loop c0

    mov cx, len1+1
    lea bx, d2
c1:
    xor byte ptr [bx], 30H  ;将结果转换为ascII值
    inc bx
    loop c1

    mov cx, len1
    lea bx, d2
c2:
    mov al, [bx]           ;查找结果中,第1个结果不是0的数字
    cmp al, 30H            ;从此开始显示结果,以免出现0123这样的结果
    jnz p0
    inc bx
    loop c2
p0:
    mov dx,bx
    mov ah,9
    int 21h

    mov ah,4ch
    int 21h
cseg ends
end start

;这是减法的代码
;有个bug,被减数必须大于减数时才正确。
;暂时先这样
dseg segment
  d10  db '991'
  len1 equ $-d10  ;注意 d10与d12长度相同,可以做不同,但比较麻烦,这里没做
  d11  db '-'
  d12  db '192'   ;长度与d10相同
  d13  db '=','$'
  d2   db len1+1 dup(0),'$'
dseg ends

assume cs:cseg, ds:dseg
cseg segment
start:
    mov ax, dseg
    mov ds, ax

    mov ah,9
    lea dx, d10
    int 21h

    lea si, d10
    lea di, d12
    lea bx, d2
    add si, len1-1 ;指向个位数位置
    add di, len1-1 ;指向个位数位置
    add bx, len1 ;指向个位数位置
    mov cx, len1 ;计算器

    clc          ;清除cf
c0:
    mov ah,0     ;清除ah
    mov al,[si]  ;取对应位置上的数字相加
    and al,0FH   ;
    mov dl,[di]  ;
    and dl,0FH   ;

    sub al,[bx]  ;减去可能的借位
    aas          ;再调整

    sub al,dl    ;相减
    aas          ;调整

    neg ah       ;如有借位,转换为正数1
    mov [bx],al  ;保存到对应的位置上
    mov [bx-1],ah;可能存在的进位,保存到对应的位置上
    dec si       ;下一位相加
    dec di
    dec bx
    loop c0

    mov cx, len1+1
    lea bx, d2
c1:
    xor byte ptr [bx], 30H  ;将结果转换为ascII值
    inc bx
    loop c1

    mov cx, len1
    lea bx, d2
c2:
    mov al, [bx]           ;查找结果中,第1个结果不是0的数字
    cmp al, 30H            ;从此开始显示结果,以免出现0123这样的结果
    jnz p0
    inc bx
    loop c2
p0:
    mov dx,bx
    mov ah,9
    int 21h

    mov ah,4ch
    int 21h
cseg ends
end start
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
山东沃尔德集团集团所辖公司介绍 齐鲁银行无忧贷和市民贷哪个好 什么叫补按揭 后按揭贷款什么意思 买房者续按揭有什么危害 加按揭是什么意思 八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 温都滑雪场雪场简介 《梦华录》:41岁柳岩把男人扔水里,她能否凭借这部剧翻身? 大学里喜欢独处,这样好吗? ...没上进心,脾气暴躁。多次沟通,无效,很爱玩游戏? (1/2)我是大二男生,课业压力一般,但是要考证,基本现在不上社交类网站... 我是一位大二男生,和同校不同专业的一位女生正好一起玩一个游戏。平时... 65岁老年补贴多少钱,答案来了! 自己装一台电脑主机需要什么配件,价格多少 新人刚来机关工作,是否要请领导吃饭或送点礼? ...有没有好心人可以告诉一下 弓长岭滑雪场现在的票价是多钱 学生价... 描写乐观积极向上的经典句子 ...了一个黑客,他会不会入侵后盗取我的钱啊?改密码有用吗? 崇明县技术合同认定后就可以享受税收优惠政策吗? ...男朋友送的劳力士被起诉,别人送的真的就属于自己了吗? 中考结束会有人看监控吗 要做一个3.5m*0.9m的喷绘应该怎么做? 江苏转角风淋室规格 江西快速卷门价格 广州健康证多久拿证 辽宁pvc快速卷门 多字节BCD码数的加法。 ...中设计一个程序,是能从键盘上输入任意的非压缩BCD码求它们的和并在... 汇编将两个单元的BCD数合并,并放到一个单元中,怎么编写? 我的手机卡是中国电信的怎样用手机申请QQ号 ...燃烧的时候蜡烛倒了把墙上的佛像燃了,燃着才发现自己的孩子在佛像后... 景德镇陶瓷大学是省级还是市级 卖和平精英账号需要发自己身份证信息给 问一下,大专生回去学数控和模具怎么样,这几年的就业形势怎么样?行业薪 ... ...现在即将毕业。学的数控专业。大专学历。专业不是很精通。该学的软 ... 如何给男友的爸妈留下好的第一印象呢? 男朋友的妈妈对我的第一印象不好,我应该如何处理好我们的关系,让她喜... 谈一谈男生给女生挑礼物时普遍都比较纠结? 如何给男朋友的父母留下好的第一印象 ...单价汇总表里的机械费一类费用、二类费用 怎么算??? 我不知道给我女朋友生日 送什么?好纠结!!她 22岁,下个月生日,... ...真菌有效的是() A.万古霉素 B.林可霉素 C.多黏菌素 D.无味红霉素... 从北京机场到东京成田机场能带多少斤行李 12月12日上海至日本成田机场国航航班能带多少公斤行李? ...今年暑假回国 我看到有日本转机 羽田转成田机场的 请问这种机票需要... 决斗之城百度版怎么不见了