当前位置:首页 > 汇编语言课程设计
call second ;调用小写字母转换成大写字母 jmp start L3: call crlf
call third ;调用十六进制转换成二进制 jmp start L4: call crlf
call forth ;调用二进制转换成十六进制 jmp start L5: call crlf
call fifth ;调用十六进制转换成十进制 jmp start exited: ret main endp
;----------------------------------------------------------------------------------------------------- first proc near ;大写字母转换成小写字母 mov bx,0 begin1:
mov ah,1 ;输入需要转换的字符 int 21h
cmp al,41h ;若字符小于A的ASCII码,退出 jl exity
cmp al,5ah ;若字符大于Z的ASCII码,退出 ja exity
add al,20h ;开始转换 mov dl,al mov ah,2 int 21h call crlf exity: ret first endp
;----------------------------------------------------------------------------------------------------- second proc near ;小写字母转换成大写字母 mov bx,0 begin2:
mov ah,1 ;输入需要转换的字符 int 21h
cmp al,'a' ;若字符小于a的ASCII码,退出 jl exits
cmp al,'z' ;若字符大于z的ASCII码,退出 ja exits
sub al,20h ;开始转换 mov dl,al mov ah,2 int 21h
call crlf exits: ret second endp
;-------------------------------------------------------------------------------------------------- third proc near ;十六进制转换成二进制 begin3: mov dx,0 mov bl,4
input: mov ah,1 ;输入需要转换的十六进制数,可输入四位 int 21h
sub al,30h ;是否为0-9的数字,否则退出 jl exite
cmp al,10d ;输入值为0~9的数字 jl addto sub al,07h
cmp al,0ah ;是否为a-f的字母,否则退出 jl exite
cmp al,0fh ;输入值为A~F的字符 jle addto sub al,20h
cmp al,0ah ;输入其他字符 jl exite cmp al,0fh
jle addto ;输入值为a-f,否则退出 jmp exite addto:
mov cl,4 shl dx,cl mov ah,0 add dx,ax dec bl jnz input
call p1 ;调用P1,显示输出相应的二进制数 call crlf
;------------------------------------------------------------------------------------------------- p1 proc near mov cx,16d mov bx,dx p2:
shl bx,1 jc p3
mov dl,30h mov ah,2 int 21h dec cx
jnz p2 ret
p3: mov dl,31h mov ah,2 int 21h dec cx
jnz p2 ;若还不为0,则继续执行 ret p1 endp
exite: mov ah,4ch ;程序结束,返回 int 21h third endp
;---------------------------------------------------------------------------------------------------- forth proc near ;二进制转换成十六进制 push ds sub ax,ax push ax begin:
mov bx,0 loop1:
clc
mov ah,1h int 21h
cmp al,0dh ;是否为回车键,若是则输入完成 je printit cmp al,'0' jz nextto stc nextto:
rcl bx,1 ;带进位左移 jmp loop1
printit: ;回车换行,使输入值保留 mov dl,0dh mov ah,2h int 21h mov dl,0ah mov ah,2h int 21h
mov cl,4 ;将二进制按十六进制输出 mov ch,4 loop2:
rol bx,cl ;循环左移 mov dl,bl and dl,0fh
add dl,30h cmp dl,3ah jb loop3 add dl,7h loop3:
mov ah,2h int 21h dec ch
jnz loop2
quit: call crlf ;调用回车换行,保留输入值,返回 ret forth endp
;-------------------------------------------------------------------------------------------------------- fifth proc near ;十六进制转换成十进制 titles:
push ds sub ax,ax push ax
call one ;调用one,将十六进制转换为二进制 call crlf
call two ;调用two,将二进制转换为十进制输出 call crlf
ret ;退出子程序 fifth endp
;------------------------------------------------------------------------------------------------------- one proc near mov bx,0 goon:
mov ah,1 ;输入要转换的字符,此处只能输入一个字符 int 21h
sub al,30h ;字符是否为0-9的数字 jl exit
cmp al,10d ;是数字,跳到adds jl adds sub al,27h
cmp al,0ah ;输入字符是否为a-f的字母 jl exit
cmp al,10h
jge exit ;不是字母,退出 adds:
mov cl,4
shl bx,cl ;逻辑左移,bx左移4位 mov ah,0 add bx,ax
共分享92篇相关文档