汇编语言 将2个正序数组逆序后输出

汇编不懂编 2013-06-12 05:29:37
小妹最近刚学的汇编,最近老师布置了作业,写了这个程序编译没问题,但是运行有问题,我看了很久都没发现问题在哪,这个作业纠结好多天了求各位大神帮忙看看到底是什么问题啊

DATA SEGMENT
DATA SEGMENT
A1 DW 20 DUP(?)
A2 DW 20 DUP(?)
A3 DW 40 DUP(?)
N1 DW ?
N2 DW ?
C10 DW 10
MESS1 DB 0DH,0AH,'Input numbers of element in A1(1~20):$'
MESS2 DB 0DH,0AH,'Input values of element in A1(0~65536):$'
MESS3 DB 0DH,0AH,'Final array is:$'
MESS4 DB 0DH,0AH,'The charater you have inputed is error!Please re-input:$'
MESS5 DB 0DH,0AH,'Input numbers of element in A2(1~20):$'
MESS6 DB 0DH,0AH,'Input values of element in A2(0~65536):$'
DATA ENDS
STACK SEGMENT
DW 256 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MESS1
MOV AH,9
INT 21H
CALL INPUT;输入元素的个数
MOV N1,AX

LEA DX,MESS2
MOV AH,9
INT 21H
MOV CX,N1;数组循环次数
LEA SI,A1
L1:
CALL INPUT;AX作为子程序出口
MOV [SI],AX
ADD SI,2
LOOP L1

MOV CX,N1
DEC CX
LEA SI,A1
MOV DI,SI
L8:
CALL SORT
LOOP L8

LEA DX,MESS5
MOV AH,9
INT 21H
CALL INPUT ;输入数组A2的元素个数
MOV N2,AX
LEA DX,MESS6
MOV AH,9
INT 21H
MOV CX,N2
LEA DI,A2
L2: ;数组A2排序
CALL INPUT
MOV [DI],AX
ADD DI,2
LOOP L2
MOV CX,N2
DEC CX
LEA SI,A2
MOV DI,SI
L9:
CALL SORT
LOOP L9

LEA SI,A1 ;数组A1和A2里的元素排序后放在A3数组
MOV CX,N1
ADD CX,N2
DEC CX
MOV AX,CX
SHL AX,1
LEA DI,A3
ADD DI,AX ;A3数组最后一个元素地址
L10:
CALL SORT
LOOP L10

MOV CX,BX
LEA SI,A3
L3: ;输出数组A3
CALL PRINT
ADD SI,2
LOOP L3

MOV AH,4CH
INT 21H

INPUT PROC NEAR ;输入函数
MOV BX,0
L4:
MOV AH,1
INT 21H
CMP AL,' '
JE FINISH
MOV AH,0
CMP AL,'0'
JL ERROR
CMP AL,'9'
JA ERROR
AND AL,0FH
XCHG AX,BX
MUL C10
ADD AX,BX
XCHG AX,BX
JMP L4
ERROR:
LEA DX,MESS4
MOV AH,9
INT 21H
JMP L4
FINISH:
MOV AX,BX
RET
INPUT ENDP
SORT PROC NEAR ;排序函数
PUSH CX
PUSH SI
L5:
MOV AX,[SI]
CMP AX,[SI+2]
JLE NEXT
XCHG AX,[SI+2]
XCHG AX,[SI]
NEXT:
ADD SI,2
LOOP L5

POP SI
MOV AX,[SI]
MOV [DI],AX
SUB DI,2
POP CX
RET
SORT ENDP
PRINT PROC NEAR ;输出函数
MOV AX,[SI]
MOV CX,0
L6:
DIV C10
PUSH DX
INC CX
CMP AX,0
JNE L6
L7:
POP DX
OR DL,30H
MOV AH,2
INT 21H
LOOP L7
RET
PRINT ENDP
SPACE PROC NEAR ;输出空格
MOV DL,' '
MOV AH,2
INT 21H
RET
SPACE ENDP
CODE ENDS
END START

...全文
270 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
汇编不懂编 2013-06-13
  • 打赏
  • 举报
回复
怎么没有人来啊,,,

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧