📄 exp5.asm
字号:
;从键盘接收一个16进制数,并输出来
stack1 segment para stack
dw 20h dup(0)
stack1 ends
code segment
assume cs:code,ss:stack1
start: mov bx, 0
newchar: mov ah, 1 ;调用1号功能键盘输入
int 21h
cmp al, 30h
jl exit1 ; <0退出
cmp al, 39h
jle sub30h
cmp al, 41h
jl exit1 ; <‘A’退出
cmp al, 46h
jg exit1 ; >’F’退出
sub al,07h
sub30h: sub al,30h
cbw
xchg ax,bx
mov dx,16
mul dx
xchg ax,bx
add bx,ax
jmp newchar
exit1: mov dl,0ah ;换行
mov ah,02h ;功能号2为输出字符
int 21h
mov dl,0dh ;回车
int 21h
mov ch,4
rotate: mov cl, 4 ;设置移位次数
rol bx, cl
mov al, bl ;不取到AL可否?
and al, 0fh ;取bx中的最低四位
cmp al, 9h
jle printit
add al, 7h ; ’A’~’F’ ASCII 41H~46H
printit: add al, 30h ; ’0’~’9’ ASCII 30H~39H
mov dl, al
mov ah, 2
int 21h
dec ch
jnz rotate
mov ah,4ch ;返回DOS系统
int 21h
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -