主题:请教高手,在线等急用~
ss1820
[专家分:0] 发布于 2005-12-05 14:16:00
[em10]设置两个八位二进制变量N1,N2,编写程序,将N1的高4位(做高4位),N2的低4位,拼成一个新的字节,并在屏幕上显示
回复列表 (共1个回复)
沙发
erping [专家分:3660] 发布于 2005-12-05 14:46:00
.model tiny
.code
org 100H
_main:
jmp _start
N1 db 12H
N2 db 34H
_start:
mov ah, N1
mov al, N2
and ax, 1111000011110000B
mov cl, 4
shr ah, cl
or al, ah
xor ah, ah
mov cx, 10 ;以 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
我来回复