80x86汇编语言编程:二进制输入、十进制输出

编程实现键盘输入16位二进制数,转换成等值十进制数显示。


程序执行后,要求操作员键入16位二进制数,然后程序立即进行转换,显示出等值的十进制数。

对于非法键入不受理,不回显,也不显示错误信息。


显示格式示范如下:


000010011101011B = 1259D


做而论道编写的程序如下:


;==================================

DATA  SEGMENT

    BUF1   DB  10, 13, 'PLEASE  INPUT  BIN : ', 13, 10, '$'

    BUF2   DW  0

DATA  ENDS

;----------------------------------

CODE  SEGMENT

    ASSUME  CS:CODE, DS:DATA, ES:DATA

BEG:

    MOV   AX, DATA

    MOV   DS, AX

    MOV   AH, 09H

    MOV   DX, OFFSET  BUF1

    INT   21H

    MOV   BX, 0

    MOV   CX, 16

_IN_:

    MOV   AH, 07H     ;输入字符

    INT   21H

    CMP   AL, 13

    JE    _OUT_

    CMP   AL, '0'

    JB    _IN_

    CMP   AL, '1'

    JA    _IN_

    ADD   BX, BX

    CMP   AL, '1'

    JNE   NO_0

    INC   BX

NO_0:

    MOV   AH, 02H

    MOV   DL, AL

    INT   21H

    LOOP  _IN_

;--------------------------    

_OUT_:

    MOV   BUF2, BX    ;保存


    MOV   AH, 02H

    MOV   DL, 13

    INT   21H

    MOV   DL, 10

    INT   21H

    MOV   AX, BUF2

    MOV   BX, 2

    CALL  OUT_AX

    MOV   AH, 02H

    MOV   DL, 'B'

    INT   21H

    MOV   DL, '='

    INT   21H

    MOV   AX, BUF2

    MOV   BX, 10

    CALL  OUT_AX

    MOV   AH, 02H

    MOV   DL, 'D'

    INT   21H

EXIT:

    MOV  AH, 4CH

    INT  21H

;------------------------------

OUT_AX   PROC       ;

    OR   AX, AX

    JZ   _0_

LOOP_P:

    XOR  DX, DX

    DIV  BX

    MOV  CX, AX     ;

    OR   CX, DX

    JZ   _E_        ;

    PUSH DX         ;

    CALL LOOP_P     

    POP  DX         ;

    CMP  DL, 10

    JB   A30

    ADD  DL, 7

A30:

    ADD  DL, '0'    ;

    JMP  _1_

_0_:MOV  DL, '0'    ;

_1_:CALL PUTC

_E_:RET

OUT_AX   ENDP

;------------------------------

PUTC  PROC  

    MOV  AH, 2

    INT  21H

    RET

PUTC  ENDP

;------------------------------

CODE  ENDS

    END  BEG

;==================================


经过编译、连接、执行后的结果,完全符合题目要求。


题目链接:http://zhidao.baidu.com/question/544543775.html


提问者评价:THX !




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值