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

代码:

;把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


结果:



  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是汇编语言实现二进制十六进制转换的示例代码: ``` section .data bin db 10101010b ; 二进制 hex db 0x2A ; 十六进制 section .text global _start _start: ; 二进制十六进制 mov al, bin ; 将二进制存入 al 寄存器 mov bl, 16 ; 将 16 存入 bl 寄存器 div bl ; al 寄存器的值除以 bl 寄存器的值,商存入 ah 寄存器,余存入 al 寄存器 cmp al, 9 ; 判断余是否小于等于 9 jbe bin_to_hex ; 如果小于等于 9,跳转到 bin_to_hex 标签 add al, 7 ; 如果大于 9,将余加上 7,得到 A~F 的 ASCII 码 bin_to_hex: add al, 30h ; 将余转换为 ASCII 码 mov [hex], al ; 将 ASCII 码存入 hex 变量中 ; 十六进制二进制 mov al, [hex] ; 将十六进制存入 al 寄存器 sub al, 30h ; 将 ASCII 码转换字 cmp al, 9 ; 判断字是否小于等于 9 jbe hex_to_bin ; 如果小于等于 9,跳转到 hex_to_bin 标签 sub al, 7 ; 如果大于 9,将字减去 7,得到 A~F 的值 hex_to_bin: mov bl, 2 ; 将 2 存入 bl 寄存器 mov cl, 0 ; 将 0 存入 cl 寄存器 mov dl, al ; 将字存入 dl 寄存器 mov al, 0 ; 将 al 寄存器清零 hex_to_bin_loop: shr dl, 1 ; 将 dl 寄存器右移一位,相当于除以 2 adc al, 0 ; 将进位标志位加到 al 寄存器中 inc cl ; 将 cl 寄存器加一 cmp cl, 8 ; 判断是否已经转换了 8 位二进制 jne hex_to_bin_loop ; 如果没有,跳转到 hex_to_bin_loop 标签 mov [bin], al ; 将二进制存入 bin 变量中 ; 退出程序 mov eax, 1 ; 将系统调用号 1(退出程序)存入 eax 寄存器 xor ebx, ebx ; 将返回值 0 存入 ebx 寄存器 int 0x80 ; 调用系统中断 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值