主题:用查表的方法求值
zhangtie
[专家分:0] 发布于 2006-01-05 13:11:00
data segment
pfi db 0.1.4.9.16.25.36.49.64.81
num db 8
data ends
用查表的方法将num中的数据转换为它的平方值
回复列表 (共1个回复)
沙发
erping [专家分:3660] 发布于 2006-01-05 14:03:00
;2006-1-5
;data segment
; pfi db 0, 1, 4, 9, 16, 25, 36, 49, 64, 81
; num db 8
;data ends
; 用查表的方法将num中的数据转换为它的平方值
.model small
.stack
.data
pfi db 0, 1, 4, 9, 16, 25, 36, 49, 64, 81
num db 8
.code
_main:
mov ax, @data
mov ds, ax
mov bx, offset pfi
mov al, num
xlat
xor ah, ah
mov cx, 10
call print ;输出结果
mov ax, 4C00H
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
end _main
我来回复