实验三 从键盘输入数据并显示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验2 从键盘输入数据并显示

编写程序,将键盘接收到的4位16进制数转换为等值的二进制数,再显示在荧光屏上。

分析:整个程序分为3个部分:键盘输入、转换、显示,可以分别用子程序来完成。

1. 输入。输入可以利用字符串输入。这时需要在主程序中先开辟一段输入缓冲区。

先复习一下字符串输入的知识。

字符串输入 ( 0AH 功能 )

入口参数 DS : DX = 缓冲区的首地址

( DS :DX ) = 限制最多输入的字符数

功能号 AH = 0AH

类型号 21H

出口参数 ( DS : DX+1 ) = 实际键入的字符(不含回车符) 从( DS : DX+2 )开始顺序存放键入的字符串,

回车符0DH为串尾最后一字符。

实现功能等待从键盘输入字符串,并存入设定的缓冲区内,

同时回显字符串,光标随着移动,

回车符使光标回到行

首。

注意事项:应按要求先定义缓冲区,再调用。

数据缓冲区的设置如下:

data SEGMENT ;定义缓冲区

stri DB ‘PLEASE INPUT’ ,0AH,0DH, ’$’ ;输入提示

max DB 4 ;定义限制最多输入个数

lenth DB ? ;用于存放实际输入个数

stri DB 5 DUP(?) ;用于存放输入的字符串

data ENDS

从键盘输入‘ABCD’, 回车,内存的存放结果:

子程序如下:

INPUT PROC

LEA DX, stri

MOV AH, 09H ;调显示功能

INT 21H

LEA DX , max

MOV AH , 0AH

INT 21H

; 调0A输入功能

RET

INPUT ENDP

2. 转换。由于在缓冲区中存放的是输入字符的ASCII码,比如

1→31H,A→41H ,a→61H,所以首先需要将它们转换成对应的数字的大小。如1→0000,0001B,A和a→1010。

如何转换?

数字和字母的ASCII码是一个有序序列

数字0~9 : 30H ~ 39H

大写字母A~Z : 41H ~ 5AH

小写字母a~z : 61H ~ 7AH

对于每个字符,先减去30H,数字0~9就转换完了;如果判断是否大于09H,是则减去07H,大写字母A~F转换完毕,如果是小写字母a~f,还要减去20H。

假设用SI间指数据缓冲区,程序段如下:

MOV AL, [SI] ;应用输入字符

SUB AL,30H

CMP AL,

09H ;大于09H, 则为字符

JLE LOOP1

;为字母A~F的ASCII

SUB AL, 07H

LOOP1: CMP AL, 20H

JLE NEXT1

;为字母a~f的ASCII

SUB AL, 20H

NEXT1: ……

;后续处理

利用一个循环就可以将4个字符转换成相应的二进制数。

现在,在数据缓冲区中存放的是输入的16进制数每一位的值,占用了4个字节,每个字节只用到低四位。

如:输入为ABCD,则缓冲区中存放的是:0AH,0BH,0CH,0DH。

实验要求将输入的4位16进制数转换成等值的二进制数,也就是一个字,所以还要将这4个字节进行组合。

组合方法如下:

取出最高的两位,如0AH,0BH,放入寄存器AX中,(注意:AH=0BH,AL=0AH),将AL左移4位,变成A0H,和AH相“或”,得到AL=ABH,存入BH寄存器;同理将后两个字节组合成一个字节,存入BL寄存器。

3. 显示。可以调用“以二进制的形式显示BX寄存器的内容”子程序来实现。合成部分的程序段:

MOV CX,4 ;移位次数

LEA SI , STRI ;取前两个字节送AX

MOV AX, [SI]

SHL AL,CL ;AL左移四位

OR AL,AH

MOV BH , AL ;保

LEA SI , STRI+2

MOV AX, [SI]

SHL AL,CL

OR AL,AH

MOV BL , AL

主程序:

code SEGMENT

ASSUME CS:code, DS:data

start: MOV AX , data ;置缓冲区地址于DS:DX

MOV DS , AX

LEA DX, stri

MOV AH, 09H ;调显示功能

INT 21H

LEA DX , max

MOV AH , 0AH

INT 21H

CALL CHANGE ; 转换

……

;组合

CALL DISPLAY ; 显示

……

;返回DOS

……

;各个子程序

……

;结束

相关文档
最新文档