
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
DA DB 12, 0, 45, -7, -33, 99
DA_LEN EQU $ - DA
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
MOV CX, DA_LEN - 1
LP1:
MOV SI, 0
PUSH CX
LP2:
MOV AL, DA[SI]
CMP AL, DA[SI + 1]
JNB NEXT
XCHG AL, DA[SI + 1]
MOV DA[SI], AL
NEXT:
INC SI
LOOP LP2
POP CX
LOOP LP1
EXIT:
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
你的退出语句错误,应该是mov ax,4c00h另外,由于没有输出语句,所以程序没有结果显示出来,为便于检查结果,下面将你的程序改写为com文件格式的程序,便于在debug中调试检查结果是否正确:
CSEG SEGMENT
ASSUME CS:CSEG,DS:cseg,es:cseg
org 100h
start: jmp start1
A DB 8,1,2,7,6,3,2,5,4,3
START1:
push cs
pop ds
push cs
pop es
MOV CX,10
DEC CX
LOOP1: MOV DI,CX
MOV BX,offset a
LOOP2: MOV AL,es:[BX]
CMP AL,es:[BX+1]
JGE CONTINUE
XCHG AL,es:[BX+1]
MOV es:[BX],AL
CONTINUE: ADD BX,1
LOOP LOOP2
MOV CX,DI
LOOP LOOP1
MOV AH,1
INT 21H
int 20h
CSEG ENDS
END START
在masm的文件夹下。把要编译的程序写在记事本里,把后缀改成asm,放在masm的文件夹下。然后打开dosbox输入命令进入masm。使用命令进入masm文件夹下。进入C其实就是masm目录。使用masmasm命令生成obj文件0警告0错误代表成功。文件夹下可以看到生成obj程序。obj链接生成exe文件然后就可以执行了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)