[精彩]2进制到16进制转换
2进制到16进制转换
prognam segment
main proc far开始
assume cs:prognam
star:
BX循环左移一个数 push ds 位 sub ax,ax
push ax
把最右面的数位转 ;main part of program
mov ch,4 换为ASCII
rotate:
mov cl,4 N
rol bx,cl
mov al,bl 是 and al,0fh
ASCII A~F, add al,30h
cmp al,3ah
jl printit
add al,7h 加上7 printit:
mov dl,al
mov ah,2
int 21h 显示一个字符
dec ch
jnz rotate N
ret
循环记数
值=0,
main endp Y
prognam ends N
end
大小写转化
开始 assume cs:code
data segment
"begin",0 db
输入字符 dat segment para 'dat'
dat1 db 10,?,10 dup(?) dat ends
stac segment para stack 'stac' 是
stac1 db 100 dup(?) ASCIIa~z? stac ends
code segment para 'code' assume cs:code,ds:dat,es:dat,ss:stac
加20H star proc far
push ds
xor ax,ax 显示
push ax
mov ax,dat
mov ds,ax
mov es,ax
g3: call xsy
lea bx,[dat1+1]
xor cx,cx
mov cl,byte ptr [bx]
add bx,cx
mov byte ptr[bx+1],'$'
lea di,dat1
call xs
lea di,dat1
call xzd
call xs
jmp g3
ret star endp xzd proc
mov cl,[di+1]
mov ch,00
add di,2 lp2:
mov al,[di]
cmp al,'a'
jb g2
cmp al,'z'
ja g2
sub byte ptr [di],20h
g2:
inc di
loop lp2
ret
xzd endp xsy proc
lea dx,dat1
mov ah,0ah
int 21h
ret
xsy endp xs proc
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
lea dx,dat1
add dx,2
mov ah,9
int 21h
ret
xs endp
code ends end star
前导后续字母 data segment
" ",0dh,0ah,"$" a db 开始
;c db "下一个字符",0dh,0ah,"$" data ends
cseg segment 输入字符
assume cs:cseg,ds:data start:
mov ax,data 是 mov ds,ax ASCIIa~z? mov dx,offset a
mov ah,9h
int 21h
mov ah,1 加1,加0,减1
int 21h
mov dl,al 显示 dec dl
mov cx,3
L1:
mov ah,2
int 21h
inc dl
loop L1
exit:
mov ah,4ch
int 21h
cseg ends
end start