80x86汇编语言编程:二进制输入、十进制输出
2016-01-25 12:01
906 查看
编程实现键盘输入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 !
程序执行后,要求操作员键入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 !
相关文章推荐
- 80x86汇编语言编程:查找字符串中的最大、最小值
- 80x86汇编语言编程:三个数字进行比较
- C编程中阻止程序退出的方法
- 80x86汇编语言编程:在屏幕上显示彩色 ASCII 码
- Matlab入门学习(矩阵、函数、绘图的基本使用)
- 80x86汇编语言编程:在屏幕上模拟升旗的过程
- 80x86汇编语言编程:排序与显示
- 80x86汇编语言编程:求 10000 以内的《完数》
- 80x86汇编语言编程:输入格雷码、输出对应的十进制数字
- 一个 51 单片机的编程题
- 80x86 汇编语言:编程一题
- 80x86汇编语言编程:按下任意键,以二进制和16进制输出该键所对应的 ASCII 码
- ;单片机汇编语言编程:汽车转向灯控制器
- 80x86汇编编程:把一串字符从键盘输入,然后逆序输出
- PHP+apc+ajax实现的ajax_upload上传进度条代码
- 8086汇编语言编程--大小写转换、统计个数、显示时还要求发音
- C语言编程:统计输入的各字符的个数
- C语言编程:扑克牌魔术
- 80x86汇编编程:键入两个8进制数字,相加后以16进制输出
- Python -- collection 系列