微机原理第三次实验报告

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

实验三DOS中断调用实验实验报告

健行理工1402班陈丽红 201424450202

一、实验目的

掌握字符和数据的显示方法。

二、实验内容

先显示信息“INPUTSTRING,THE END FLAG IS $”再接收字符。如为0-9,则计数器加1,并显示计数,如为非数字,则直接显示,但不计数。

三、程序框图

开始

段寄存器和堆栈段初始化

数字字符计数器清0

回车换行

显示提示信息

接收键入字符并显示

是$字符

调用QUI,返回

DOS

结束

是回车键

是0-9

计数器BX加1,保存计数器的

值后将其转化为ASCII码

回车换行

显示计数结果

回车换行

调用DISP,显示字符Y

N

Y

Y

N

N

四、程序说明

本次实验重点在于了解中断调用的步骤:(1)准备入口参数;(2)功能号送AH;(3)执行INT n命令,熟练掌握向量号21H的部分常用功能调用。

程序设计时通过对输入的字符进行判断,根据判断结果进入不同的子程序段运行,显示运行结果。

五、源程序清单与执行结果

5.1 源程序清单

DATA SEGMENT ;定义数据段,DATA为

D1 DB 'INPUTSTRING, THE LAST FLAG IS', 0DH, 0AH,'$' 段名,将信息存放在

D2 DB 0DH, 0AH, '$' D1,D2中

DATA ENDS

STACK SEGMENT STACK ;定义堆栈段

DB 100 DUP(?)

STACK ENDS

CODE SEGMENT ;说明代码段、数据段、堆栈段 ASSUME CS:CODE,DS:DATA,SS:STACK

BG: MOV AX,DATA

MOV DS, AX ;给DS赋段值

MOV BX, 0 ;数字字符计数器BX清0

JMP L1 ;跳转至L1

QUI: MOV AH,4CH ;返回DOS

INT 21H

DISP: MOV DX,OFFSET D2 ;输出回车换行

MOV AH,9H

INT 21H

MOV AH,2H ;显示AL中的字符内容

MOV DL,AL

INT 21H

L1: MOV DX,OFFSET D2 ;输出回车换行

MOV AH,9H

INT 21H

MOV DX,OFFSET D1 ;输出“INPUTSTRING,THE END FLAG IS” MOV AH,9H

INT 21H

MOV AH,1H ;键盘输入并显示

INT 21H

CMP AL,'$' ;判断输入字符是否为'$'

JE QUI ;是则调用QUI,返回DOS

CMP AL,0DH ;判断输入字符是否为回车,是则输出 JNE L2 回车换行,进入下一次L1循环,不是

MOV DX,OFFSET D2 则跳转至L2

MOV AH,9H

INT 21H

JMP L1

L2: CMP AL,'9' ;判断输入字符是否为0-9,是则计数 JA DISP 器BX加1,不是则跳转至DISP

CMP AL,'0'

JB DISP

INC BX

PUSH BX ;将BX的内容压入堆栈,保存

ADD BX,30H ;将BX中的数值转化为ASCII码

MOV DX,OFFSET D2 ;输出换行

MOV AH,9H

INT 21H

MOV AH,2H ;显示计数

MOV DL,BL

INT 21H

POP BX ;弹出BX的内容

JMP L1

CODE ENDS

END BG

5.2 执行结果截图

(1)接收字符为0-9,计数器加1,并显示计数。

(2)接收字符为非数字,则直接显示,但不计数,接收字符为0-9时继续计数。

(3)接收字符为‘$’,返回DOS。

相关文档
最新文档