汇编的贪吃蛇
汇编 10进制转16进制 冒泡排序

将AX以10进制显示出来

scturtle posted @ 2009年10月22日 20:00 in 各种实验 , 1786 阅读

写汇编实验7遇到的问题,以前懒,这次只好硬着头皮写了

ret曾因为前面循环而少push了一次,不停在子程序里循环跳不出来了

以前看书时不以为然,这次可算是亲身体会了

SHOWAXD PROC NEAR ;USES AX BX CX DX SI
        CMP AX,0
        JG ZHENG
        JL FU
        MOV DL,30H
        MOV AH,2
        INT 21H
        RET
FU:
        PUSH AX
        MOV DL,'-'
        MOV AH,2
        INT 21H
        POP AX
        NEG AX
ZHENG:
        XOR SI,SI
        MOV BX,10
        MOV CX,10000
NEXT:
        XOR DX,DX
        DIV CX
        PUSH DX
        MOV DL,AL
        CMP DL,0
        JNE DISIT
        CMP SI,0
        JE IGNOR
DISIT:
        ADD DL,30H
        MOV AH,2
        INT 21H
        INC SI
IGNOR:
        CMP CX,1
        JE GOOUT
        XOR DX,DX
        MOV AX,CX
        DIV BX
        MOV CX,AX
        POP AX
        JMP NEXT
GOOUT:
        POP DX
        RET
SHOWAXD ENDP

 09.11.17 上面的想法不好 这一个应该要好很多

showbxd proc near uses ax bx cx dx si di
        xor di,di ;0正1负
        mov cx,5 ;循环次数
        mov si,10 ;被除数
        cmp bx,0
        jnl zheng
        inc di
        neg bx
zheng:
        mov ax,bx
next:
        xor dx,dx
        div si
        add dx,30h
        push dx
        loop next
       
        test di,1 ;是否输出负号
        je nofu
        mov dl,'-'
        mov ah,2
        int 21h
nofu:
        xor bx,bx ;是否已输出0
        mov cx,5
        mov ah,2
next2:
        pop dx
        cmp dx,30h
        jne nozero
        cmp bx,0
        je noprint
nozero:
        inc bx
        int 21h
noprint:
        loop next2
        ret
showbxd endp

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter