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

一个写逻辑的汇编程序,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 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名