汇编语言实现显示16进制数

将内存单元存储的8个两位16进制数:01H, 25H, 38H, 62H, 8DH, 9AH, BAH,  CEH依次显示在屏幕上。

直接转换。

DATA SEGMENT
BUF DB 01H,25H,38H,62H,8DH,9AH,0BAH,0CEH
N DW $-BUF
X DW 0
DATA ENDS
CODE SEGMENT
   ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
       MOV DS,AX
       MOV CX,N
BE:    MOV N,CX
       MOV BX,X

       MOV DL,BUF[BX]
       INC BX
       MOV X,BX
       CALL DELY
       MOV CX,N
       CMP CX,1
       JE FINISH
       MOV DL,','
       MOV AH,2
       INT 21H
       LOOP BE
FINISH:MOV AX,4C00H
       INT 21H

DELY   PROC NEAR
       MOV BL,DL
       MOV CL,4
       SHR DL,CL
       OR DL,30H
       CMP DL,39H
       JBE AD1
       ADD DL,7
AD1:   MOV AH,2
       INT 21H
       MOV DL,BL
       AND DL,0FH
       OR DL,30H
       CMP DL,39H
       JBE AD2
       ADD DL,7
AD2:   MOV AH,2
       INT 21H
       MOV DL,'H'
       MOV AH,2
       INT 21H
       RET
DELY ENDP
CODE ENDS
     END START

打表法:

DATA SEGMENT
BUF DB 01H,25H,38H,62H,8DH,9AH,0BAH,0CEH
N DW $-BUF
ASCII DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
      DB 41H,42H,43H,44H,45H,46H
X DW 0
Y DB 0
DATA ENDS
CODE SEGMENT
   ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
       MOV DS,AX
       MOV CX,N

BE:    MOV N,CX
       MOV BX,X
       MOV DL,BUF[BX]
       INC BX
       MOV X,BX

       MOV CX,N
       CMP CX,1
       JE FINISH
       MOV DL,','
       MOV AH,2
       INT 21H
       LOOP BE

FINISH:MOV AX,4C00H
       INT 21H
DELY   PROC NEAR
       MOV Y,DL
       MOV CL,4
       SHR DL,CL
       MOV BX,OFFSET ASCII
       MOV AL,DL
       AND AL,0FH
       XLAT
       MOV DL,AL
       MOV AH,2
       INT 21H
       MOV AL,Y
       AND AL,0FH
       XLAT
       MOV DL,AL
       MOV AH,2
       INT 21H

       MOV DL,'H'
       MOV AH,2
       INT 21H
       RET
DELY ENDP
CODE ENDS
     END START

 

  • 8
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
汇编语言中,要显示十六进制,可以使用以下步骤: 1. 将要显示存储在一个寄存器或内存位置中。 2. 使用除以16和求余的操作将转换为十六进制的两位。 3. 将余转换为对应的十六进制字符,并使用DOS的显示功能显示出来。 4. 重复以上步骤,直到所有的位都显示完毕。 在给出的代码中,首先将要显示的十进制存储在AL寄存器中,并使用DIV指令将其转换为十六进制的两位。然后,根据得到的余和商,将其转换为对应的十六进制字符,并使用DOS的显示功能显示出来。 具体的步骤如下: 1. 将要显示的十进制存储在AL寄存器中。 2. 使用DIV指令将AL寄存器中的除以16,商存储在AH寄存器中,余存储在AL寄存器中。 3. 判断余是否大于等于10,如果是,则需要将其转换为对应的十六进制字符。将余减去10,并加上字符'A'的ASCII码,将结果存储在DL寄存器中。 4. 如果余小于10,直接将其加上字符'0'的ASCII码,将结果存储在DL寄存器中。 5. 使用DOS的显示功能,将DL中的字符显示出来。 6. 判断商是否大于等于10,如果是,则需要将其转换为对应的十六进制字符。将商减去10,并加上字符'A'的ASCII码,将结果存储在DL寄存器中。 7. 如果商小于10,直接将其加上字符'0'的ASCII码,将结果存储在DL寄存器中。 8. 使用DOS的显示功能,将DL中的字符显示出来。 9. 重复以上步骤,直到所有的位都显示完毕。 通过这样的步骤,就可以在汇编语言显示十六进制了。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [汇编语言实现输入十进制字输出显示十六进制字](https://blog.csdn.net/weixin_43789635/article/details/112982463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [汇编语言 输出16进制](https://blog.csdn.net/weixin_45755679/article/details/111085833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值