datarea SEGMENT ;
a DW 5 DUP(?)
X DW 8,5,6,84,32
datarea ENDS
prognam SEGMENT ;
main PROC FAR ;
ASSUME CS:prognam,DS:datarea
start: ;
PUSH DS ;
SUB AX,AX ;
PUSH AX ;
MOV AX,datarea ;
MOV DS,AX ;
MOV CX,5 ;
DEC CX ;
LOOP1: MOV DI,CX ;
MOV BX,0 ;
LOOP2: MOV AX,a[BX] ;
CMP AX,a[BX+2] ;
JGE cotinue ;
XCHG AX,a[BX+2] ;
MOV a[BX],AX ;
cotinue:
ADD BX,2 ;
LOOP LOOP2 ;
MOV CX,DI ;
LOOP LOOP1 ;
RET ;
main ENDP ;
prognam ENDS ;
END start ;
程序上面给出,帮我看看怎么把结果显示出来,谢谢,最后把程序补出
------解决方案--------------------------------------------------------
在end start 之前用个循环,调用DOS 2H号功能输出。
------解决方案--------------------------------------------------------
在end start之前加上
mov cx,5
xor bx,bx
out:
mov dx,[bx]
mov dh,0
mov ah,2
int 21h
add bx,2
loop out
------解决方案--------------------------------------------------------
data segment
SCORE dw 85,89,56,23,90,78,80,69,50,96
rank dw 10 dup(?)
printn db 30 dup(?),13,10,'$'
data ends
code segment
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov si,10
mov bx,0
loopp:
mov ax,SCORE[bx]
mov dx,0
mov cx,10
lea di,SCORE
next:
cmp ax,[di]
jg no_count
inc dx
no_count:
add di,2
loop next
mov rank[bx],dx
dec dx
mov di,dx
add di,dx
add di, dx
mov cl,10
div cl
add al,30H
add ah,30H
mov printn[di],al
inc di
mov printn[di],ah
inc di
mov printn[di],20H
add bx ,2
dec si
jne loopp
lea dx,printn
mov ah,09
int 21H
pop ax
pop ds
mov ax,4c00h
int 21h
code ends
end start
------解决方案--------------------------------------------------------
CR=0DH
LF=0AH
DSEG SEGMENT
BUF DB 5 DUP(0),CR,LF,'$'
X DW 8,5,6,84,32
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START :
MOV AX,DSEG
MOV DS,AX
MOV ES,AX
MOV CX,5
DEC CX
L1:MOV DI,CX
MOV BX,0
L2:MOV AX,X[BX]
CMP AX,X[BX+2]
JGE L3
XCHG AX,X[BX+2]
MOV X[BX],AX
L3:ADD BX,2
LOOP L2
MOV CX,DI
LOOP L1
MOV CX,5
XOR SI,SI
L4:MOV AX,X[SI]
CALL SHOW
ADD SI,2
LOOP L4
MOV AX,4C00H
INT 21H
SHOW PROC
MOV DI,5
MOV BX,10
L5:XOR DX,DX
DIV BX