汇编实现将AX中的数字分别以二进制和十六进制形式输出

DATAS SEGMENT
    ;此处输入数据段代码 
    STRING DB  10,13,'$'
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    mov AX,123
    CALL Binary;二进制输出函数
    CALL LINEFEED
    CALL HEXADECIMAL;十六进制输出函数
    MOV AH,4CH
    INT 21H
    
Binary PROC
    PUSH CX
    PUSH DX
    MOV CX,16
    L1:
    ROL AX,1
    MOV DL,AL
    AND DL,1
    ADD DL,48
    PUSH AX
    MOV AH,2
    INT 21H
    POP AX
    LOOP L1
    POP DX
    POP CX
    
    RET
Binary ENDP
    
HEXADECIMAL PROC
    PUSH BX
    PUSH CX
    PUSH DX
    MOV BX,16
    L1:
    CMP BX,0
    JE L3
    MOV CL,4
    ROL AX,CL
    MOV DL,AL
    AND DL,15
    ADD DL,48
    CMP DL,58
    JL L2
    SUB DL,48
    ADD DL,55
    L2:
    PUSH AX
    MOV AH,2
    INT 21H
    POP AX
    SUB BX,4
    JMP L1
    
    L3:
    MOV DL,'H'
    MOV AH,2
    INT 21H
    POP BX
    POP CX
    POP DX
    RET 
HEXADECIMAL ENDP
    
LINEFEED PROC
    PUSH AX
    PUSH DX
    MOV DX,OFFSET STRING
    MOV AH,9
    INT 21H
    POP DX
    POP AX
    RET
LINEFEED ENDP
CODES ENDS
    END START

题目不难核心就是一个移位rol指令

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值