| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 591 人关注过本帖
标题:从键盘输入两个十进制的数相加并计算结果
只看楼主 加入收藏
嘎嘎88
Rank: 1
来 自:广西百色
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-12-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
从键盘输入两个十进制的数相加并计算结果
这个是两个从键盘输入任意两个十进制数相加的程序,但是我看不出哪里出了错,哪位大神能不能帮忙改一下·······
DATAS SEGMENT
   x db 20 dup(0)
   y db 20 dup (0)
   f db 'error','$'
   k dw 0
   t dw 0  ;此处输入数据段代码  
DATAS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov si,0
x1:
    mov ah,07h
    int 21h
    mov dl,al
    cmp dl,'+'
    jz x2
    cmp dl,'='
    jz x3
    cmp dl,30h
    jb xi
    cmp dl,39h
    ja xi
x4:
    mov ah,02h
    int 21h
    mov x[si],dl
    inc si
    jmp x1
x2:
    cmp si,0
    jz xi
    mov k,si
    mov bx,0
    mov cx,k
    xa:
         mov al,x[bx]
         mov y[bx],al
         inc bx
         loop xa
         add bx,1
         mov t,bx
    jmp x4
x3:
    cmp si,0
    jz xi
    mov ah,02h
    int 21h
    mov bx,k
    mov di,0
    sub si,bx
    mov cx,si
    xb:
        mov al,x[bx+1]
        mov x[di],al
        inc bx
        inc di
        loop xb
    clc
    pushf
    mov k,di
    cmp t,di
    jnb x5
    mov cx,k
    jmp x6
x5:
    mov cx,t
    ;jmp x6
x6:
    mov dl,y[di]
    mov al,x[si]
    sub al,30h
    sub dl,30h
    dec si
    dec di
    popf
    adc al,dl
    aaa
    pushf
    add al,30h
    mov dl,al
    mov ah,02h
    int 21h
    loop x6
    jmp xj
xi:
    mov dx,OFFSET f
     mov ah,09h
     int 21h
     MOV DL,0ah
    MOV AH,02H
    INT 21H
    MOV DL,0dh
    MOV AH,02H
    INT 21H
    jmp start    ;此处输入代码段代码
xj:
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START




DATAS SEGMENT
   x db 20 dup(0)
   y db 20 dup (0)
   f db 'error','$'
   k dw 0
   t dw 0  ;此处输入数据段代码  
DATAS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov si,0
x1:
    mov ah,07h
    int 21h
    mov dl,al
    cmp dl,'+'
    jz x2
    cmp dl,'='
    jz x3
    cmp dl,30h
    jb xi
    cmp dl,39h
    ja xi
x4:
    mov ah,02h
    int 21h
    mov x[si],dl
    inc si
    jmp x1
x2:
    cmp si,0
    jz xi
    mov k,si
    mov bx,0
    mov cx,k
    xa:
         mov al,x[bx]
         mov y[bx],al
         inc bx
         loop xa
         add bx,1
         mov t,bx
    jmp x4
x3:
    cmp si,0
    jz xi
    mov ah,02h
    int 21h
    mov bx,k
    mov di,0
    sub si,bx
    mov cx,si
    xb:
        mov al,x[bx+1]
        mov x[di],al
        inc bx
        inc di
        loop xb
    clc
    pushf
    mov k,di
    cmp t,di
    jnb x5
    mov cx,k
    jmp x6
x5:
    mov cx,t
    ;jmp x6
x6:
    mov dl,y[di]
    mov al,x[si]
    sub al,30h
    sub dl,30h
    dec si
    dec di
    popf
    adc al,dl
    aaa
    pushf
    add al,30h
    mov dl,al
    mov ah,02h
    int 21h
    loop x6
    jmp xj
xi:
    mov dx,OFFSET f
     mov ah,09h
     int 21h
     MOV DL,0ah
    MOV AH,02H
    INT 21H
    MOV DL,0dh
    MOV AH,02H
    INT 21H
    jmp start    ;此处输入代码段代码
xj:
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START




























搜索更多相关主题的帖子: 键盘 十进制 
2012-12-06 13:04
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:20 
坛子里 有这方面的例子 可以对比一下 要修改一个比较长的而且没有具体错误提示的汇编程序 是让人望而生畏的。

梅尚程荀
马谭杨奚







                                                       
2012-12-06 22:19
快速回复:从键盘输入两个十进制的数相加并计算结果
数据加载中...
 
   



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

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