这是我的程序,还没完善。
assume cs: code
data segment
db 10 dup (0)
data ends
code segment
start: mov ax, 12666
mov bx, data
mov ds, bx
mov si, 0
call dtoc
mov dh, 8
mov dl, 3
mov cl, 2
call show_str
mov ah, 0
int 16h
mov ax, 4c00h
int 21h
dtoc: push bx
push si
push dx
push cx
push ax
mov dl, 10 ;设置dl为除数.
mov bx, 0
yushu: div dl ;商al,余数ah.
mov cl, al
sub ch, ch ;商的值给cx.
jcxz s ;不为0继续下一条,为0跳到s.
add ah, 30h
mov [si], ah ;余数ah赋值给ds:[si].
inc si
mov ah, 0
jmp short yushu
s: mov byte ptr [si+1], 0
mov al, [si]
mov ah, [bx]
mov [si], ah
mov [bx], al
dec si
inc bx ;置换序号.
mov cx, si
sub cx, bx
jcxz short k
jmp short s
k: pop ax
pop cx
pop dx
pop si
pop bx
ret
show_str: push dx
push cx
push si
sub dh, 1
sub dl, 1
mov al, 160
mul dh
add dl, dl
sub dh, dh
add dx, ax
mov bx, dx
mov di, 0
mov al, cl
change: mov cl, [si]
sub ch, ch
jcxz ok
mov es: [bx+di], cl
mov es: [bx+di+1], al
inc si
add di, 2
jmp short change
ok:pop si
pop cx
pop dx
ret
code ends
end start |