主题:为什么没有输出结果呢
pqmagic
[专家分:0] 发布于 2005-12-06 21:38:00
data segment
A dw 4444
B dw 2222
data ends
code segment
assume cs:code,ds:data,es:data
start: mov ax,data
mov ds,ax
mov es,ax
mov ax,A
mov bx,B
sub ax,bx
mov ah,4CH
int 21h
code ends
end start
回复列表 (共2个回复)
沙发
erping [专家分:3660] 发布于 2005-12-06 21:44:00
data segment
A dw 4444
B dw 2222
data ends
code segment
assume cs:code,ds:data,es:data
start: mov ax,data
mov ds,ax
mov es,ax
mov ax,A
mov bx,B
sub ax,bx
mov cx, 10
call print ;以 10 进制输出 ax 中的值
mov ah,4CH
int 21h
print proc ;提供多种进制的输出
;ax 存放要转换的数
;cx 存放进制形式 (2 <= 进制 <= 35)
cmp cx, 2
jl _error_
cmp cx, 35
ja _error_
push bx ;保存 bx
push dx ;...
sub sp, 16 ;16 (2 * 8)个字节的临时变量
mov bx, sp ;bx 指向变量地址
xor dx, dx
_loop:
cmp ax, 0
jne _next
cmp dx, 0
je _print
_next:
div cx
cmp dx, 9 ;比较余数是否大于 9
ja _than_nine
add dl, '0'
jmp _save_dl
_than_nine:
add dl, 'A' - 0AH ;大于 9 的数转换处理
_save_dl:
mov ss:[bx], dl
inc bx
cwd
jmp _loop
_print:
dec bx
_print_next:
cmp bx, sp
jl _end
mov dl, ss:[bx]
mov ah, 2
int 21H
dec bx
jmp _print_next
_error_:
xor ax, ax ;return false
ret
_end:
add sp, 16 ;恢复堆栈
pop dx
pop bx
mov ax, 1 ;return true
ret
print endp
code ends
end start
板凳
pqmagic [专家分:0] 发布于 2005-12-06 21:50:00
好多啊,请问还有其他的方法吗?谢了
我来回复