实验二 顺序程序设计实验

实验二 字符及字符串输入/输出与顺序程序设计实验

一、实验目的

1) 学习和掌握字符及字符串的输入输出方法。

2) 掌握顺序程序的设计方法。

3) 进一步掌握调试工具的使用方法。

二、实验预习要求

1) 复习DOS 功能调用中用于字符输入(功能号为01H )、字符输出(功能号为02H )、

字符串输入(功能号为0AH )以及字符串输出(功能号为09H )的调用方法。

2) 复习BCD 码运算调整指令。

3) 根据“三、实验内容”中给出的源程序框架,编写完整的源程序,以便实验时调试。

三、实验内容

从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。

1. 问题分析

比如使用功能号为01H 的用于实现单个字符输入的DOS 功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII 码值38H 和36H 。由于数字0~9的ASCII 码值与其代表的数值之间相差30H ,因此将其减去30H 即可得到以非压缩BCD 码形式表示的十进制数08H 和06H ,使用ADD 指令对它们进行相加后,结果为0EH (00001110B ),显然需要用非压缩型BCD 码加法调整指令对ADD 的运算结果进行调整,调整后得到两个非压缩型BCD 码01H 和04H ,将它们分别加上30H 后变为其对应的ASCII 码31H (1的ASCII 码)和34H (4的ASCII 码),然后调用功能号为02H 用于单个字符输出的DOS 功能调用将它们显示出来。综上所述,需要考虑以下问题。

1) 从键盘输入一个一位十进制数的方法。

通过功能号1的DOS 功能调用实现从键盘输入一个字符,格式如下:

MOV AH ,01H

INT 21H ;此时程序等待用户键入,键入字符的ASCII 码值存在AL 中 SUB AL ,30H ;减去30H 后得到键入数字所代表的数值

2) 提示信息字符串的显示。

通过功能号为9的DOS 功能调用实现字符串显示,注意字符串的最后一个字符必需为‘$’。指令格式如下:

MOV DX ,OFFSET INFOR1 ;INFOR1为在数据段中定义的要显示的字符串 MOV AH ,09H

INT 21H

3) 非压缩型BCD 码加法调整指令的使用。

设从键盘输入的数值已存放在寄存器AL ,BL 中,可用下列程序完成数据相加和调整操作:

XOR AH ,AH

ADD AL ,BL

AAA ;执行该指令好,AH 中为和的十位上的数字,AL 中为个位上的数字

4) 计算结果的显示。

执行完AAA 指令后,只需分别将AH (十位上的数值)和AL (个位上的数值)加上30H ,并依次调用功能号为2的DOS 功能调用来显示字符。具体指令代码如下:

PUSH AX

MOV DL ,AH

ADD DL ,30H

MOV AH ,02H

INT 21H

POP AX

MOV DL ,AL

ADD DL ,30H

MOV AH ,02H

INT 21H

源程序框架

DATA SEGMENT

INFOR1 DB ‘Please Input the First Data(

INFOR2 DB 0AH ,0DH ,’ Please Input the Second Data(

INFOR3 DB 0AH ,0DH ,’ The Result is:$’

;0DH 和0AH 分别为非显示字符回车和换行的ASCII 码值

;美圆符号“$“为字符串结束标志,不能省略

DATA ENDS

CODE SEGMENT

ASSUME CS :CODE ,DS :DATA

START :MOV AX ,DA TA

MOV DS ,AX

SUB AL ,30H

MOV BL ,AL

SUB AL ,30H

PUSH AX

POP AX

PUSH AX

MOV AH ,4CH

INT 21H

CODE ENDS

END START

3. 程序调试

源程序编写完成后,先静态检查,无误后,对源程序进行汇编和连接,生成可执行文件。在DOS 命令提示符下运行该程序,分析运行结果是否正确。若结果不正确,使用DEBUG 对其进行调试。

四、实验报告要求

1. 补全“三、实验内容”中源程序框架内未需填写的程序代码,并说明在调试该程序

过程中遇到了哪些问题,是如何处理的。

2. 写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题等。 2.


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn