| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1468 人关注过本帖
标题:汇编大数相加。
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:20 回复次数:19 
汇编大数相加。
搞了N久 搞出了大数相加,不过很原始啊 AAA指令都没用 因为不知道怎么用
有兴趣大家可以看下 讨论下更好的办法。。。
先上结果图  不知道有BUG没?
图片附件: 游客没有浏览图片的权限,请 登录注册


程序代码:
;#Mode=DOS
;MASMPlus 单文件代码模板 - 纯 DOS 程序
;--------------------------------------------------------------------
;单个文件需要指定编译模式,否则默认是EXE方式,在系统设置中可以设置默认是DOS还是Windows.
;编译模式自带了DOS/COM/CON/EXE/DLL/LIB这几种,如果有必要,可以更改ide.ini添加新的编译模式
;当然,更好的是创建为一个工程.更方便及易于管理,使用方法:按Ctrl多选->创建工程.必须有多个文件

assume cs:code, ds:data, ss:stack
stack segment
        dw    200 dup(?)
stack ends

data    segment
    stra     db    'Please input  a:  ', '$'
    strb     db    'Please input  b:  ', '$'
    strc     db    'The resut a + b = ', '$'
    bufa     db 100
        lena db ?
             db 100 dup(?)
    bufb     db 100
        lenb db ?
             db 100 dup(?)
    tempa    db 101 dup(0)
    tempb    db 101 dup(0)
    rslt     db 200 dup(0)
data    ends
code    segment
start:              mov    ax, data
                    mov    ds, ax
                    mov    es, ax                      

                    mov    ax, stack
                    mov    ss, ax
                    mov    sp, 200                   

                    mov    dx, offset stra
                    mov    ah, 9
                    int   21h                  
                  
                    mov    ah, 10
                    mov    dx, offset bufa
                    int    21h                   

                    mov    cl, lena
                    mov    ch, 0
                    mov    si, offset bufa
                    add    si, cx
                    inc     si
                    mov    di, offset tempa
   convert_stra:    mov    dl, BYTE ptr [si]
                    sub     dl, 30h
                    mov    BYTE ptr [di], dl
                    dec    si
                    inc     di
                    loop     convert_stra                                         

                    call     crlf
                  
                    mov    dx, offset strb
                    mov    ah, 9
                    int     21h
                  
                    mov    dx, offset bufb
                    mov     ah, 10
                    int    21h
                    mov    cl, lenb
                    mov    ch, 0               

                    mov    di, offset tempb
                    mov    si, offset bufb
                    add    si, cx
                    inc    si
   convert_strb:    mov    dl, BYTE ptr [si]
                    sub    dl, 30h
                    mov    BYTE ptr [di], dl
                    dec     si
                    inc     di
                    loop    convert_strb                      

                    mov    ch, 0
                    mov    cl, lena
                    cmp    cl, lenb
                    ja    addnow
                    mov    cl, lenb
     addnow:        add     cx, 1
                    mov    dx, cx
                    mov    bl, 0
                    mov    si, offset tempa
                    mov    di, offset tempb               

        addloop:    mov     al, BYTE ptr [si]
                    add    al, BYTE ptr [di]
                    add    al, bl
                    cmp   al, 9
                    ja    adjust
                    mov    bl, 0
                    jmp   notadj
         adjust:    add    al, 6
                    and    al, 00001111b
                    mov    bl, 1
        notadj:     add    al, 30h
                    mov    ah, 0
                    push     ax
                    inc    di
                    inc     si
                    loop  addloop
                  
                    mov    si, offset rslt
                    pop   bx
                    cmp    bl, '0'
                    je    storerslt
                    mov    BYTE ptr [si], bl
                    inc    si
        storerslt:  mov   cx, dx
                    dec    cx                  
         storeloop: pop     bx
                    mov    BYTE ptr [si], bl
                    inc     si
                    loop     storeloop
                  
                    mov    al, '$'
                    mov    BYTE ptr [si], al
                  
                    call     crlf
                  
                    mov    dx, offset strc
                    mov    ah, 9
                    int     21h
                              
                    mov    dx, offset rslt
                    mov    ah, 9  
                    int     21h
                  
                    mov    ah, 1
                    int    21h
                    mov    ah, 4ch
                    int     21h
                  
crlf:               mov    dl, 13
                    mov    ah, 2
                    int    21h
                    mov    dl, 10
                    mov    ah, 2
                    int    21h
                    ret
code    ends

end    start
为什么 帖程序老是会不按原来的排版出现 短的还能自己改下 长的就太难看了 很多次了啊
特别是对我这种爱帖程序的人 伤不起啊

[ 本帖最后由 有容就大 于 2012-10-2 22:04 编辑 ]
搜索更多相关主题的帖子: 办法 
2012-10-02 21:54
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
我是来膜拜的楼主的

贴代码是这样 代码中的TAB帖上来就变成4个空格了 而在编辑器中 TAB的宽带其实是考虑对齐的 所以 可能会对不齐
2012-10-02 21:57
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 2楼 zklhp
这样啊 但是也常发现一个空行的间隔 会变成3到4行? 莫非是当时写程序的时候确实ENTER了几次 然后又把光标移动到只有一行间距的那行去了?


梅尚程荀
马谭杨奚







                                                       
2012-10-02 22:02
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:20 
以下是引用有容就大在2012-10-2 22:02:18的发言:

这样啊 但是也常发现一个空行的间隔 会变成3到4行? 莫非是当时写程序的时候确实ENTER了几次 然后又把光标移动到只有一行间距的那行去了?
这个不知道

这下面有一行空行



程序代码:
这下面有两行空行




程序代码:
这下面有三行空行





程序代码:
这下面有四行空行





2012-10-02 22:05
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
刚试了 手工打的没有问题 你找一下你的代码 换不同编辑器打开或用记事本打开 看看是不是显示的问题

马上结题算了
2012-10-02 22:07
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 4楼 zklhp
可能是那么的。。。
Z版 有什么好建议吗
我这个太绕了 如果沿这个思路再做乘法 除法 那就更绕了

梅尚程荀
马谭杨奚







                                                       
2012-10-02 22:08
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用有容就大在2012-10-2 22:08:38的发言:

可能是那么的。。。
Z版 有什么好建议吗
我这个太绕了 如果沿这个思路再做乘法 除法 那就更绕了

这还绕 你实现一个带小数点的看看就知道绕不饶了。。。
2012-10-02 22:10
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 7楼 zklhp
哇 小数点 。。。。。。这个 这个 有挑战性

梅尚程荀
马谭杨奚







                                                       
2012-10-02 22:13
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


我曾经写过一个 你看看这里面判断的层数就知道了 貌似有上千行的C语言 才只实现了带小数的加减
2012-10-02 22:14
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
听你的 速度结了。。。

梅尚程荀
马谭杨奚







                                                       
2012-10-02 22:14
快速回复:汇编大数相加。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037023 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved