主题:如何用汇编语言编写从键盘接收16进制数转变为2进制
zwwjsj
[专家分:0] 发布于 2006-04-19 17:03:00
如何用汇编语言编写从键盘接收16进制数转变为2进制
小弟急需
望高手指点
回复列表 (共4个回复)
沙发
我的汇 [专家分:10] 发布于 2006-04-20 19:01:00
怎么实现从键盘输入十进制然后转换为二进制并显示出来啊!
转换的子程序我弄出来了
可是怎么实现键盘输入和把转换后的二进制显示出来呀
帮帮我呀
谢谢了!
板凳
我的汇 [专家分:10] 发布于 2006-04-20 19:42:00
【例4.17】用模块化程序设计方法编制一个把十进制数N(16bit)转换成十六进制数的程序,要求待转换数N由键盘输入,转换结果在屏幕上显示出来。首先建立两个模块A:READ.ASM和模块B:SCREEN.ASM。其中模块A:完成转换功能,模块B完成显示功能。
模块A:READ.ASM
PUBLIC crlf,m
EXTRN disp:near
data SEGMENT PUBLIC 'data'
n DB 0ah,0dh,'input=$'
m DB 'output=$'
crlf DB 0ah,0
data ENDS
code SEGMENT PUBLIC 'code'
ASSUME cs:code,ds:data
start PROC far
PUSH ds
MOV ax,0
PUSH ax
MOV ax,data
MOV ds,ax
REPEat: MOV bx,0
MOV ah,9
LEA dx,n
INT 21h
CALL DECibin
CALL disp
MOV ah,1
INT 21h
CMP al,0dh
JZ END1
JMP REPEat
END1: RET
start ENDP
DECibin PROC near
newchar: MOV ah,1
INT 21h
SUB al,30h
JL exit
CMP al,39h
JG exit
CBW
XCHG ax,bx
MOV cx,10
MUL cx
XCHG ax,bx
ADD bx,ax
JMP newchar
exit: RET
DECibin ENDP
code ENDS
END start
模块B:
PUBLIC disp
EXTRN crlf:byte,m:byte
code SEGMENT PUBLIC 'code'
ASSUME cs:code
disp PROC near
MOV ah,09h
LEA dx,m
INT 21h
MOV ch,4
rotate: MOV cl,4
ROL bx,cl
MOV al,bl
AND al,0fh
ADD al,30h
CMP al,3ah
JL printit
ADD al,07h
printit: MOV dl,al
MOV ah,2
INT 21h
DEC ch
JNZ rotate
RET
disp ENDP
code ENDS
END
你自己看了
3 楼
kk1986628 [专家分:60] 发布于 2006-04-21 11:11:00
prognam segment
main proc far
assume cs:prognam
start:
push ds
sub ax,bx
push ax
mov ch,4
rotate mov cl,4
rol bx,cl //循环左移
mov al,bl
and al,0fh
add al,30h
cmp al,3ah
jl printit
add al,7h
printit:
mov dl,al
mov ah,2
int 21h
dec ch
jnz rorate
ret
main endp
prognam ends
end
不知道对不对啊,临场发挥
[em9][em9][em9][em9]
4 楼
我的汇 [专家分:10] 发布于 2006-04-21 22:12:00
能不能给个注示呀!
我来回复