麻烦会汇编语言的大侠帮我看一下下面的代码出错在哪里。。。在线等。。。

2025-06-20 08:57:30
推荐回答(4个)
回答1:

;修改完毕,已测试
DATA SEGMENT
TS1 DB 'PLEASE INPUT THE 15 NUMBERS:',0AH,0DH,'$'
STR1 DB 15 DUP(0),0AH,0DH,'$'
TS2 DB 0AH,0DH,'THE EXCHANGED 15 NUMBERS IS :',0AH,0DH,'$'
DATA ENDS

STACK SEGMENT USE16 STACK
DB 200 DUP(0)
STACK ENDS ;****缺少堆栈段

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK ;****缺少堆栈段
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA DX,TS1
MOV AH,09H
INT 21H

MOV CX,15
MOV SI,0 ;****注意从0开始
LOP1: MOV AH,01H
INT 21H
MOV STR1[SI],AL
INC SI
CALL KG
LOOP LOP1

LEA DX,TS2
MOV AH,09H
INT 21H

MOV CX,15
MOV SI,0 ;****注意从0开始
LOP2: MOV AL,STR1[SI]
MOV DL,AL
MOV AH,02H
INT 21H ;****注意这两条指令不要分开
CALL KG

INC SI
LOOP LOP2

MOV AH,4CH
INT 21H

KG PROC NEAR
MOV DL,' '
MOV AH,02H
INT 21H
RET
KG ENDP
CODE ENDS
END START

回答2:

你这个程序的错误修改好了,bl和bh里面分别是A、B数组的长度。
应该完全符合你的要求。
winder segment
a db 'luoyao 20101120101$'
b db 2h dup(0h,0h,0h,0h,0h)
c dw offset a,offset b
org 0200h
d db ?
winder ends
cod segment
assume cs:cod, ds:winder
start:
mov ax,winder
mov ds,ax
lea dx,a
mov ah,9h
int 21h
mov bl,b+7h
mov d,bl
mov bl,b-a
mov bh,c-b
lea dx,c
mov ah,4ch
int 21h
cod ends
end start
随便说一下,你对size这个操作符的理解有问题。

回答3:

代码有问题

回答4:

给的分太少了