我是靠谱客的博主 稳重树叶,最近开发中收集的这篇文章主要介绍编程将键盘输入的4位十进制数转换成二进制,并以十六进制形式在屏幕上显示。如果 输入的不是十进制数字时退出程序,返回DOS,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
编程将键盘输入的4位十进制数转换成二进制,并以十六进制形式在屏幕上显示。如果
输入的不是十进制数字时退出程序,返回DOS。
编程提示:
采用子程序结构,用一个子程序DECIN实现从键盘接收4位十进制数并转换成二进制数,放在BX寄存器中;用一个子程序HEXDISP完成十六进制数的屏幕显示。同时,为避免屏幕上的重叠,另外用子程序CRLF来实现回车换行。
整个程序结构如下:
在各个子程序之间,用BX寄存器来完成参数传递:在过程DECIN中取得的输入数据转换为二进制后保存在BX寄存器中,而过程HEXDISP将BX寄存器中的二进制数以十六进制的形式在屏幕上显示出来。
在DOS环境下运行程序,并观察运行结果是否正确。
code segment
assume cs:code,ds:code
org 100h;
start:
mov ax,3;文本模式
int 10h
push cs
pop ds
push ds
pop es
Again:call CRLF
lea dx,mes1;提示
mov ah,9
int 21h
call input;接收十进制数
lea dx,mes2
mov ah,9
int 21h
;*** 输出二进制结果 ***
call HEXDISP
lea dx,mes3
mov ah,9
int 21h
mov ah,0;暂停
int 16h
cmp ah,15h ;"Y(y)"继续
jz Again;计算下一题
mov ah,4ch;结束
int 21h
input:
xor bp,bp
mov cx,4
T1:mov ah,0;接收数字
int 16h
cmp al,'0';数据校验
jb T1
cmp al,'9'
jbe yes
yes:
mov ah,0eh ;显示有效数据
int 10h
sub al,30h
cmp al,9
jbe w2
sub al,7
w2:cbw
shl bp,1
mov bx,bp
shl bp,1
shl bp,1
add bp,bx
add bp,ax
loop T1
mov ah,0eh
ret
HEXDISP:
mov cx,4
f0:clc
MOV AX,bp
AND AX,0F000H
SHR AX,12
SHL bp,4
CMP AX, 9
JNG NUMFLG
ADD AX,7
NUMFLG: ADD AX,30H
MOV DL,AL
MOV AH,02H
INT 21H
loop f0
ret
CRLF:
MOV DL,0dh
MOV AH,02H
INT 21H
MOV DL,0ah
MOV AH,02H
INT 21H
ret
mes1 db 0dh,0ah,09,'Input (0000-9999): $'
mes2 db 0dh,0ah,09,'HX= $'
mes3 db 0dh,0ah,09,'Continue Y(y)? $'
code ends
end start
最后
以上就是稳重树叶为你收集整理的编程将键盘输入的4位十进制数转换成二进制,并以十六进制形式在屏幕上显示。如果 输入的不是十进制数字时退出程序,返回DOS的全部内容,希望文章能够帮你解决编程将键盘输入的4位十进制数转换成二进制,并以十六进制形式在屏幕上显示。如果 输入的不是十进制数字时退出程序,返回DOS所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复