使用汇编语言 将十进制数转ASC码,高分求

如题所述

给你一个子程序,已经测试过。
功能是将AX中的数据转成十进制ASCII码,注意,入口SI要指向缓冲区的尾部
TEN2ASC PROC NEAR
;ent ax=data si=end of buffer
;exit si=start of string
PUSH AX
PUSH CX
PUSH DX
MOV BYTE PTR [SI],'$' ;放结束符
MOV CX,10
SUB_L1: MOV DX,0
DIV CX
ADD DL,30H
DEC SI
MOV [SI],DL
OR AX,AX
JNZ SUB_L1
POP DX
POP CX
POP AX
RET
TEN2ASC ENDP
如果需要完整的程序,请追问
希望能帮到你!追问

不好意思我没看懂放结束符的那一句,BYTE PTR[si]是什么?

追答

是这样的,如果用MOV [SI],24H,编译器不知道24H是个字节、还是个字、或是个双字,所有要求我们写程序时,用BYPE ptr 或word ptr告诉它个傻编译器,我们要放的数是字节,还是字

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-07-01
.model small
.data
  n0 dw 12345
  s0 db 10 dup(0)
.code
start:
    mov ax, @data
    mov ds, ax

    mov ax, n0
    call c0
    lea dx, s0
    mov ah,9
    int 21h
    mov ax, 4c00h
    int 21h
c0:
    mov cx, 0
    mov bx, 10
c1:
    xor dx, dx
    div bx
    xor dx, 30h
    push dx
    inc cx
    cmp ax, 0
    jnz c1

    mov bx, 0
c2:
    pop ax
    mov s0[bx], al
    inc bx
    loop c2
    mov s0[bx], '$'
    ret
end start

本回答被网友采纳
第2个回答  2013-01-05
哪种汇编?
相似回答