一个写逻辑的汇编程序,dosbox不报错能运行但没结果,求大佬帮助?

图片说明

我这个汇编程序能运行但是没结果,用的是dosbox,大小写是自己更改多次了还是不行,哪位大佬能帮忙看一下?

DATA segment
BUF1 DB '0613'
BUF2 DB 1,2,3,4,5,6,7,8,9,0,1,2,3
NUM1 DB 4 DUP(?)
NUM2 DB 2 DUP(?)

DATA ENDS;
CODE segment
  ASSUME  CS :CODE,DS :DATA
START:

MOV si,3
MOV CX,4
TAPEIN:
MOV AH,01H
INT 21H
MOV BL,30H 
SUB AL,BL
MOV NUM1[si],AL 
DEC si
LOOP TAPEIN     ;输入4个数字,存入num1

MOV si,3
MOV DH,0
MOV AH,0
CAL:
MOV BX,3        ;将0613与输入的数字一一比较
CAL1:
MOV AL,NUM1[si]
MOV DL,BUF1[BX]
CMP AL,DL
JE EQUAL        ;发现有相等的则比较是不是同一个地方
UNEQUAL:
DEC BX          ;不相等则BX减一直到0
CMP BX,0
JAE CAL1
DEC si          ;比较
CMP si,0
JAE CAL
MOV NUM2+1,DH
MOV NUM2,AH
JMP PRINTF

EQUAL:          ;有相等元素
cmp si,BX
JNE CALB        ;但不是同一个地方
INC DH          ;是同一个地方
DEC si
JMP CAL

CALB:
INC AH
DEC si
JMP CAL

PRINTF:         ;输出提示句式
MOV AH,2
MOV DL,NUM2+1
INT 21H

MOV AH,2
MOV DL,'A'
INT 21H

MOV AH,2
MOV DL,NUM2
INT 21H

MOV AH,2
MOV DL,'B'
INT 21H

CMP NUM2+1,4        ;全对个数不是4则重新输入
JNE  START

mov dl,0ah          ;输出换行
mov ah,02h
int 21h

mov   bx,0
MOV CX,13
OVERPRINT:
MOV DL,BUF2[BX]
MOV AH,2H
INT 21H 
INC BX  
LOOP    OVERPRINT          ;输出学号

CODE ENDS
END START

我自己感觉逻辑上还是没问题的,但是对汇编语言不是很熟悉,向麻烦懂得朋友帮我指正一下······

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问