注册 登录
编程论坛 汇编论坛

大家帮忙看看这个程序有什么问题,为什么就是和我预想的结果不一样,我想给12345+67890算出来显示在屏幕上,但现在竟然是一堆乱码,我不知道哪里出问题了

筱镜尘 发布于 2010-12-14 12:55, 1215 次点击
DATA    SEGMENT
        A   DB    '12345+67890=?????$'
        B   DB    5 DUP(?)
DATA    ENDS

CODE    SEGMENT
    ASSUME  CS:CODE,DS:DATA

START:
     MOV  AX,DATA
     MOV  DS,AX
     MOV  DX,OFFSET A
     
     MOV  SI,4
     MOV  CX,5
COUNT:
     MOV  AL,[SI]
     ADC  AL,[SI+6]
     SUB  AL,30H
     MOV  B[SI],AL
     DEC  SI
     LOOP COUNT

     MOV  CX,5
     MOV  SI,0
DISP:
     MOV   AL,[B+SI]
     ADD   AL,30H
     MOV   DL,AL
     INC   SI
     LOOP   DISP
     
     MOV  AH,09H
     INT  21H

     MOV  AH,4CH
     INT  21H

CODE   ENDS
       END  START
6 回复
#2
zaixuexi2010-12-14 14:51
DATA    SEGMENT
        A   DB    '12345+67890=?????$'
        B   DB    5 DUP(?)
DATA    ENDS

CODE    SEGMENT
    ASSUME  CS:CODE,DS:DATA

START:
     MOV  AX,DATA
     MOV  DS,AX
     MOV  DX,OFFSET A
     
     MOV  SI,4
     MOV  CX,5
COUNT:
     MOV  AL,[SI]
     ADC  AL,[SI+6]
     SUB  AL,60H
     MOV  B[SI],AL
     DEC  SI
     LOOP COUNT

     MOV  CX,5
     MOV  SI,0
     MOV  DI,12
DISP:
     MOV   AL,[B+SI]
     CMP   AL,09H
     JBE   DECM
     ADD   AL,07H
DECM:
     ADD   AL,30H
     MOV   [A+DI],AL
     INC   SI
     INC   DI
     LOOP   DISP
     
     MOV  AH,09H
     INT  21H

     MOV  AH,4CH
     INT  21H

CODE   ENDS
       END  START
好象你写的我不是太理解,我只能猜测你写的意思,我就给你改了一下,你先看看吧.
#3
xiaomarn2010-12-14 15:13
程序代码:
DATA    SEGMENT
        A   DB    '12345+67890=?????$'
        B   DB    5 DUP(?),'$'
        flag db 0
DATA    ENDS

CODE    SEGMENT
    ASSUME  CS:CODE,DS:DATA

START:
     MOV  AX,DATA
     MOV  DS,AX
     MOV  DX,OFFSET A
     MOV  AH,09H
     INT  21H
   

     MOV  SI,4
     MOV  CX,5
COUNT:
     MOV  AL,a[SI]
     sub al,30h
     mov bl,a[SI+6]
     sub bl,30h
     add al,bl
     add al,flag
     cmp al,0ah
     mov flag,0
     jb lod
     mov flag,1
     sub al,0ah
lod:
     MOV  B[SI],AL
     DEC  SI
     LOOP COUNT

     MOV  CX,5
     MOV  SI,0
      mov  ah,2
DISP:
     MOV   AL,[B+SI]
     ADD   AL,30H
     MOV   DL,AL
    int 21h
     INC   SI
     LOOP   DISP
   


     MOV  AH,4CH
     INT  21H

CODE   ENDS
       END  START

#4
筱镜尘2010-12-14 18:45
回复 2楼 zaixuexi
谢了,有些我不是很明白,运行的时候没有错,但是最后出来的结果跟那两个数相加的结果不一样啊
#5
筱镜尘2010-12-14 18:53
回复 3楼 xiaomarn
谢了,结果是对了,但是最后的格式有点小问题。呵呵。还是感谢
#6
筱镜尘2010-12-14 19:58
楼上回帖的谢了,我根据你们写的,再结合自己的实际状况改了一下,现在做出来了,你们的帖子我留着借鉴经验吧!
#7
筱镜尘2010-12-14 19:58
DATA    SEGMENT
        A   DB    '12345+67890=?????$'
        B   DB    5 DUP(?)
DATA    ENDS

CODE    SEGMENT
    ASSUME  CS:CODE,DS:DATA

START:
     MOV  AX,DATA
     MOV  DS,AX
     MOV  DX,OFFSET A
     
     MOV  SI,4
     MOV  CX,5
COUNT:
     MOV  AL,[SI]
     ADC  AL,[SI+6]
     AAA
     MOV  B[SI],AL
     DEC  SI
     LOOP COUNT

     MOV  CX,5
     MOV  SI,0
     MOV  DI,12
DISP:
     MOV   AL,[B+SI]
     ADD   AL,30H
     MOV   [A+DI],AL
     INC   SI
     INC   DI
     LOOP   DISP
     
     MOV  AH,09H
     INT  21H

     MOV  AH,4CH
     INT  21H

CODE   ENDS
       END  START
我觉得这个最简单了。。。
1