dgedog 2020-06-21 22:10 采纳率: 0%
浏览 391

一个写逻辑的汇编程序,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条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?