我是靠谱客的博主 稳重树叶,最近开发中收集的这篇文章主要介绍编程将键盘输入的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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部