汇编语言 十六进制ASCII码转换为二进制显示

时间:2022-05-26 01:24:55

代码:

;把ascii码(0-9 A-F)转化成二进制显示
;先输入次数(1-9 A-F) 再转换
data segment 
times db 'times?(1-9)',0dh,0ah,'$'
mesg db  0dh,0ah,'$'
data ends

code segment
assume cs:code,ds:data
beg:	mov ax,data
		mov ds,ax

		mov ah,09h	;9号DOS调用 显示输入times
		mov dx,offset times
		int 21h 
		mov ah,01h
		int 21h
		call asciinum   ;输入参数 al 输出参数bl
		mov bh,0
		mov cx,bx

again:	push cx
		mov ah,09h
		mov dx,offset mesg
		int 21h 

		mov ah,01h
		int 21h

		call asciinum  ;输入参数 al 输出参数bl
		
		mov ah,02h	;显示“=”
		mov dl,'='
		int 21h
		
		call disp  ;显示二进制值
		
		mov ah,02h	;显示B
		mov dl,'B'
		int 21h

		pop cx
		loop AGAIN
		
		mov ax,4c00h
		int 21h
asciinum proc 		;把ascii转换成数字 例如 1 转化成1   A转化成10 F转换成15
		cmp al,3ah
		jc next1
		sub al,07h
next1:	sub al,30h
		mov bl,al
		ret
asciinum endp

disp proc     ;disp proc 和 disp endp 也是用来标记子程序 可以直接用标号
	mov cx,8
s:	mov dl,'0'
	rol bl,1
	jnc s1
	mov dl,'1'
s1:	mov ah,02h
	int 21h
	loop s
	ret
disp endp

code ends
end beg


结果:


汇编语言 十六进制ASCII码转换为二进制显示