班级  软件工程16-1  学号  3162052051116  姓名  张识虔  同组实验者              

实验名称             显示程序实验                             日期 2018 11 12

一、实验目的:

二、实验环境:

三、实验内容:

2.1 显示程序实验

2.1.1 实验目的

1. 掌握在 PC 机上以十六进制形式显示数据的方法。

 2. 掌握部分 DOS 功能调用使用方法。

 3. 熟悉 Windows 集成操作软件 Tdpit 的操作环境和操作方法。

 2.1.2 实验设备 PC 微机一台、TD-PITD 实验系统一套。

2.1.3 实验内容及说明

一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将 数据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形 式显示在屏幕上,并利用 DOS 功能调用完成一些提示信息的显示。通过本实验, 初步掌握实验系统配套操作软件的使用。 实验中常使用的 DOS 功能调用(INT 21H)说明如下。

 (1) 显示单个字符输出    入口:AH=02H    调用参数:AL=输出字符 

  例如:         MOV  AH ,02H         INT  21H

 

(2) 显示字符串    入口:AH=09H    调用参数:DS:DX=串地址,’$’为结束字符  

 例如:         MOV  AH ,09H         INT  21H

 

(3) 键盘输入并回显    入口:AH=01H    返回参数:AL=

例如:         MOV  AH ,01H         INT  21H

 

(4) 返回 DOS 系统    入口:AH=4CH    调用参数:AL=返回码 

              例如:         MOV  AH ,4CH         INT  21H

 

汇编语言源程序包含指令和伪指令。如 ADD  AL,BL MOV  AX,1000 都是指令。在汇编过程中伪指令并不形成任何代码,常用的伪指令有:

 (1) 确定 CPU 的伪指令.586/.586 P。为了使汇编语言准确运行,要求在汇编 语言源程序的开头用伪指令“.586”或者“.586 P”来表示当前的程序是在 Pentium 系统中运行。否则汇编程序采用默认值“.8086”;

 (2) 标号赋值伪指令 EQU

(3) 定义存储单元伪指令 DBDWDDDQ DTDB 定义字节,DW 定义字,DD 定义双字,DQ 定义四字,DT 定义 10 个字节;

 (4) 定义存储单元类型伪指令 BYTEWORDDWORD

 (5) 段定义伪指令 SEGMENTENDSASSUME ORG。伪指令 SEGMENT ENDS 总是成对使用,用这一对伪指令可将汇编语言与程序分成几个段,通 常分为数据段、堆栈段和代码段。ASSUME 是告诉汇编程序哪个段为数据段, 哪个段为堆栈段,哪个段为代码段;

(6) 简约段定义伪指令.DATA/.STACK/.CODE

(7) 过程定义伪指令 PROCENDPNEARFAR。定义过程的伪指令 PROC ENDP 总是成对出现,这两条伪指令中间的内容作为一个子程序;

 (8) 程序结束伪指令 END  

从存储区域读出的数据为十六进制数据,本程序设计的难点在于将十六进制 的数字转换成 ASCII 码显示。数值与 ASCII 的关系:0~9 转换成 ASCII 码时直 接在数值上加上 30H 即可,A~F 转换成 ASCII 码时直接在数值上加上 37H。程 序流程图如图 2-1-1 所示,根据程序流程图编写汇编源程序。

 

2-1-1  显示程序参考流程

根据上述流程图编写实验程序(例程文件名:A1.ASM

STACK1 SEGMENT STACK            ;堆栈段开始
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT               ;数据段开始
MES DB 'Press any key to exit!',0AH,0DH,0AH,0DH,'$'
MES1 DB 'Show a as hex:',0AH,0DH,'$'
SD DB 'a'
DATA ENDS
CODE SEGMENT               ;代码段开始
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA          ;设置 DS 寄存器
MOV DS,AX
MOV DX,OFFSET MES     ;取字符串首地址,显示退出提示
MOV AH,09H              ;在 DOS 界面显示字符串
INT 21H
MOV DX,OFFSET MES1    ;取字符串首地址,显示字符串 MOV AH,09H
INT 21H
MOV SI,OFFSET SD
MOV AL,DS:[SI]          ;把’a’送到 AL 中
AND AL,0F0H            ;取字节的高 4 位
MOV CL,4
SHR AL,CL
CMP AL,0AH             ;判断是否是 A 以上的数
JB C2
ADD AL,07H             ;大于等于 A,数值加 7H
C2: ADD AL,30H               ;数值加 30H,转换成 ASCII 码
MOV DL,AL
MOV AH,02H              ;将转换的相应 ASCII 码在 DOS 界面下显示
INT 21H
MOV AL,DS:[SI]
AND AL,0FH              ;取字节的低 4 位
CMP AL,0AH
JB C3
ADD AL,07H
C3: ADD AL,30H
MOV DL,AL              ;显示字符
MOV AH,02H
INT 21H
KEY: MOV AH,1              ;判断是否有按键按下?
INT 16H                 ;(为观察运行结果,使程序有控制的退出)
JZ KEY
MOV AX,4C00H          ;结束程序,退出
INT 21H
CODE ENDS
END START

2.1.4 实验步骤

1.使用 MASM5.0 实现

(1) 编辑源代码 源代码的编辑可在.txt 文档中直接编写,程序编写完成后将文件名改成 A1.asm,并保存在 E 盘目录下的 MYCODE 文件夹中,如:E:\MYCODE\A1.asm

 

(2) 编译 A1.asm 文件 DOS 下打开 MASM5.0 所在目录。方法:开始->运行输入 cmd 可进入 DOS

系统,依次输入 E: 回车,进入 E 盘根目录,然后输入 E:\>CD MYCODE 回车,可

打开 E:\MYCODE 目录。打开文件目录后输入命令:E:\MYCODE> D:\MASM5.0\MASM  A1.ASM ,之后连续 3 次回车。程序无错则在 E:\MYCODE中增加文件 A1.OBJ。如图 2-1-2 所示。

 

2-1-2  生成 A1.obj 文件

(3) 链接 A1.obj 文件 生成的 obj 文件并不是一个可执行文件,还需要经过 LINK 链接之后才能生 A1.exe 文件。在界面输入 E:\MYCODE>D:\MASM5.0\LINK A1.OBJ 之后连续 3 次回车,可生成.exe 文件。如图 2-1-3 所示。

 

2-1-3  生成 A1.exe 文件

此后可在 E:\MYCODE 目录下发现一个 A1.exe 文件。此文件是一个可执行 文件。如图 2-1-4 所示。

 

2-1-4  MYCODE 文件夹中显示 A1.exe 文件

本实验的结果就是将 ASCII 码‘a’的十六进制数值在屏幕上显示出来。从 屏幕上看显示结果可知实验完成。但是运行 a1.exe 文件的速度非常之快,我们无 法知道程序运行的过程,下面将介绍使用 DEBUG 调试来查看程序的运行步骤。

 

(4) DEBUG 调试 DEBUG 命令式操作系统的一个外部命令,不是 MASM5.0 的命令。 进入 DEBUG,可以对程序进行一步一步的跟踪执行,可以查看每条指令执 行后,CPU 寄存器的变化,内存单元的变化,可以修改寄存器内容和存储单元 内容,可以连续执行多条指令或全速执行程序等。

常用的调试命令如下: -u 反汇编 -r 显示寄存器内容 -g [=address1][address2][address3]  执行到断点行,如: -g 12 为执行到第 12

-t [=address][value] 跟踪,配合-g 使用 如:-t 12 1 为从第 12 行开始,每执 1 条指令后停下来 -e address [list] 修改地址 address 处的值为 listlist 不写时默认为 0 -d 查看数据 -q 退出返回操作系统 下面我们调试 a1.exe 文件。

输入命令 E:\MYCODE> DEBUG  A1.EXE 回车可进入调试系统,先输入命令

- u 对文件进行反汇编,如图 2-1-5 所示。

 

2-1-5  反汇编

输入命令-g 8 回车可将程序运行到地址为 0008 处的指令 MOV AH,09

止,再用-t 回车命令单步跟踪,观察 AX 寄存器的值。如图 2-1-6 所示。

 

2-1-6  单步调试观察寄存器的值

由地址 0013 处的程序 MOV SI002C,可知 ASCII 码’a’的数值存放在偏移地

址为 002C 的位置上,通过命令 d 可查询。输入命令-g 16 回车将程序运行到偏移

地址为 0016 处,输入命令-d 002C 回车,可查看内存中的数据,数值为 61H。图

2-1-7 的程序运行结果 61,说明程序正确。如图 2-1-7 所示。

 

2-1-7  查看内存中的数据

可输入命令-e  002C  55 回车,将偏移地址 002C 处的 61,改成 55,通过命令

-d  002C  回车 d 002C 查看更改后的结果为 55,输入命令-g 回车回车可全速运行

程序到程序结束,可见运行结果为 55,正是之前修改过的值,如图 2-1-8 所示。

 

 

2-1-8  修改偏移地址查看运行结果

通过上述的 DEBUG 命令操作要熟悉对程序的调试。

2.使用 Tdpit 集成操作软件实现

(1) 运行 Tdpit 集成操作软件,进入编辑调试集成环境。

(2) 根据程序设计使用语言不同,在“语言设置”菜单项中设置所使用的语 言。如图 2-1-9 所示。该项一经设置,会再下次启动后仍保持不变。

 

2-1-9  设置语言环境

(3) 开始新建文件进行编程。点击“文件”菜单项中的“新建”,可以新建一 个空白文档。默认名为 Td-pit1。如图 2-1-10 所示。

 

2-1-10  新建空白文档 (

4) 编写程序,如图 2-1-11 所示,并保存,此时软件会提示输入新的文件名, 输入文件名后点击保存。

 

2-1-11  程序编辑界面

(5) 点击 ,编译文件,若程序编译无误,然后再点击 ,连接程序。 编译连接成功会在输出信息栏显示输出信息,如图 2-1-12 所示。

 

2-1-12  编译连接输出信息

(6) 编译连接成功后可以点击 ,运行程序,查看运行结果。

(7) 可以点击 ,调试程序,进入调试界面,进行程序的调试。

四、心得体会:

微机实验报告2 显示程序实验相关推荐

  1. 微型计算机原理实验报告系统认识,微机原理 实验报告——显示程序实验与8259应用编程实验...

    微机原理 实验报告--显示程序实验与8259应用编程实验 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.9 积分 北京信息科技大学自动化学院实 ...

  2. c语言程序设计编辑与调试环境实验报告,01程序设计基础实验报告_C语言程序设计基础.doc...

    01程序设计基础实验报告_C语言程序设计基础 程序设计基础 实验报告 题 目: C语言程序设计基础 院 (部): 管理工程学院 专 业: 信息管理与信息系统 班 级: 信管101 姓 名: 张三 学 ...

  3. matlab软件编程求解方程实验报告,数学实验“线性方程组高斯消去法”实验报告内含matlab程序.doc...

    数学实验"线性方程组高斯消去法"实验报告内含matlab程序 西京学院数学软件实验任务书课程名称数学软件实验班级数0901学号0912020107姓名李亚强实验课题线性方程组高斯消 ...

  4. Java图形编程实验总结_JAVA实验报告简单绘图程序

    <JAVA实验报告简单绘图程序>由会员分享,可在线阅读,更多相关<JAVA实验报告简单绘图程序(8页珍藏版)>请在人人文库网上搜索. 1.实验三绘制图形一.实验目的学会JBut ...

  5. 最佳二次逼近多项式MATLAB代码,数学实验“Chebshev多项式最佳一致逼近,最佳平方逼近”实验报告(内含matlab程序).doc...

    数学实验"Chebshev多项式最佳一致逼近,最佳平方逼近"实验报告(内含matlab程序) 西京学院数学软件实验任务书 课程名称数学软件实验班级数0901学号0912020107 ...

  6. 计算机图形人机交互实验报告,用户界面设计人机交互实验报告.doc

    用户界面设计人机交互实验报告 <人机交互>实验报告 题目 实验一 图形用户界面的设计 专业 软件工程 班级 2011 学号 2011221104220026 姓名 孙元喜 导教师 关玉欣 ...

  7. 单片微型计算机原理及应用实验报告,小学期单片机实验报告_相关文章专题_写写帮文库...

    时间:2019-05-13 01:16:21 作者:admin 北京邮电大学信息与通信工程学院 小学期AVR单片机实验报告 实验题目: 基于ATmega16L单片机的电子琴设计 学生姓名:学渣 班 级 ...

  8. 安徽工程大学C语言程序设计实验报告,安徽工业大学嵌入式实验报告.docx

    安徽工业大学嵌入式实验报告 <嵌入式系统实验报告>指导教师:陆勤姓名:程少锋学号:139074366班级:物联网131班实验一B 熟悉实验开发环境一.实验目的熟悉ADS1.2 开发环境,学 ...

  9. 计算器软件C语言课程设计实验报告,c简单计算器实验报告_相关文章专题_写写帮文库...

    时间:2019-05-15 12:55:15 作者:admin 计算器实验报告 班级: 07计本(1)班 姓名: 王林 学号: 20706031047 指导老师: 韩静 一. 需求分析 (1)制作一个 ...

  10. 实验报告格计算机,计算机实验报告格式大全

    课程:大学计算机基础 班级 : ***** 学号:** 姓名:*** 组别: 同组者姓名: 仪器编号: 实验日期: 实验 windows 2000 操作 [实验目的] 1. 掌握windows 200 ...

最新文章

  1. matlab抽样模块是哪个,Matlab怎样进行信号的重建这个题先让把x(t)=sin(2πt)按照T=0.4抽样,这一步我已经...
  2. POJ 2296 Map Labeler(2-sat)
  3. 【Flink】Flink 1.12.2 Task的调度 源码
  4. 电子计算机断层扫描仪,电子计算机X线断层扫描机CT的优缺点
  5. How to install VNC on Ubuntu
  6. 不当 95% 的劣质勤奋者
  7. linux上禅道源码安装步骤
  8. 05-基础widgets
  9. VS2019打包教程
  10. 继美国后新加坡电信运营商遭DDoS攻击 部分用户断网
  11. c语言switch优点,关于C语言switch
  12. 蓝牙HC-05出现进入AT模式之后串口发送AT无返回值或者返回乱码情况
  13. 市场上股票接盘合作,大宗交易锁仓返点资源变现渠道
  14. 力扣1845——座位预约管理系统(优先队列)
  15. 大连散客旅游网今日开通一站式服务升级滨城自助游
  16. moxa串口服务器网页访问失败,moxa串口服务器连接设置
  17. AD17 普通的打螺丝孔
  18. 【MATLAB小游戏】青蛙吃苍蝇
  19. yolo-fastestv2 训练部署流程
  20. 计算机在现代工作中的应用,计算机在现代化猪场管理中的应用

热门文章

  1. 常用的python科学计算库有哪些_python科学计算常用的数学科学计算库有哪些?
  2. 数据库学习笔记【自学教程】—— 如何建立数据库
  3. 预付费售电管理系统基础知识
  4. Java后台开发一:环境搭建
  5. jvm 调优 2020.09.07
  6. win10的 程序员计算器
  7. 非参数统计的Python实现—— Fisher 精确性检验
  8. 卡BIN指的是发卡行识别码
  9. 详解Java的IO流Part7:PrintStream打印流【完结】
  10. java汉字转拼音区别多音字_Java中汉字转拼音pinyin4j用法实例分析