高手请进 汇编语言二 王爽的
;程序功能是将12666这个十进制数转化成前景色是绿色的字符串'12666'输出到dos窗口assume cs:codesg
data segment
db 16 dup (0)
data ends
codesg segment
start:mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc ;转到子程序,把原始数除10取余数,余数加30H就是所求字符串的其中一个字符,
;一直除到商为0,得到一个字符串,放到data段中
mov dh,8
mov dl,3
mov cl,2
call show_str ;转到子程序,将data段的字符串输出到屏幕
mov ax,4c00h;退出程序
int 21h
show_str:
mov ax,0B800h
mov es,ax
mov al,160
mul dh
mov di,0
add di,ax
add dl,dl
mov al,dl
mov ah,0
add di,ax
mov cx,10h
s:
mov al,
mov ah,00000010B
mov es:,ax
inc si
add di,2
loop s
ret
dtoc:
push bx;保存各寄存器的值
push dx
push ds
push si
s0:
mov dx,0;这里不把dx清零会报错,为什么?报这个错:Divide overflow??????-------------这是我的程序的问题:sad
mov cx,10
div cx
mov cx,ax
add dx,30h
mov ds:,dl
inc si
jcxz ok
jmp s0
ok:pop si
pop ds
pop dx
pop bx
ret
codesg ends
end start
楼主你的问题是什么?我这边能显示,不过显示的数据是反的
页:
[1]