汇编语言程序设计实验报告

更新时间:2023-10-02 13:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《汇编语言程序设计》实验报告

实验室:S318 最后一次实验时间: 2010 年 5 月18 日 第12周星期二1 - 2节

学院:计算机科学与技术学院 专业:计算机科学与技术

实验一

实验题目:

认识Tddebug集成环境

实验目的:

1. 2. 3. 4.

熟悉汇编程序的开发过程。 认识Tddebug集成操作软件。

掌握在Tddebug集成环境中编辑、编译、连接汇编语言程序方法。 掌握INT 21H软件中断来调用DOS内部子程序的方法

实验主要步骤:

1.运行Tddebug软件,选择Edit菜单编写实验程序

2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。 3.使用Rmrun菜单中的Run运行程序,观察运行结果。

4.使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。单步执行数据传送指令后,观察各寄存器及数据区的内容。过程如下:

1) 按F7单步执行,在代码区中有一个三角,表示正在执行的指令。每一条指令的执行一定会

使目标寄存器和状态寄存器发生变化,从相关窗口看结果。

2) 检查内存数据区的内容,关键是找出用户程序的数据段和附加段:

? 方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES

寄存器的值:偏移地址”,即可显示用户指定的数据区 ? 方法2:选择菜单View| Dump,弹出内存数据显示窗口。 3) 查看执行结果:按Alt+F5,切换到用户窗口。 5.更改数据区中的数据,考察、调试程序的正确性。 6.程序代码:

;数据传送实验,采用相对寻址方式

DDATA SEGMENT ;定义源数据段 MSR DB \LEN EQU $- MSR DDATA ENDS

EXDA SEGMENT ;定义附加数据段 MSD DB LEN DUP(?) EXDA ENDS

MYSTACK SEGMENT STACK ;定义堆栈段 DW 20 DUP(?)

MYSTACK ENDS

CODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DDATA,ES:EXDA START: MOV AX,DDATA

MOV DS,AX ;装载数据段寄存器 MOV AX,EXDA

MOV ES,AX ;装载附加数据段寄存器 MOV SI,OFFSET MSR MOV DI,OFFSET MSD MOV CX,LEN MOV BX,0

NEXT: MOV AL,MSR[BX] ;开始传输数据

MOV ES:MSD[BX],AL INC BX LOOP NEXT PUSH ES

POP DS MOV DX,OFFSET MSD MOV AH,9

INT 21H MOV AH,4CH

INT 21H CODE ENDS END START

;将附加段寄存器指向的段值赋给数据段寄存器

;显示字符串 ;返回DOS状态

实验结果:

通过Tddebug软件写好实验程序后,对程序进行编译连接,最终生成执行文件,在dos环境下启动后,进入Tddebug,对程序进行单步执行,可看到在每一步执行过程中,程序所分得的地址单元。连接试验箱后,通过对试验箱的操作,能够看到在dos环境下程序的执行步骤。

代码运行结果:显示:“HELLO,WORLD!”

心得体会:

通过本次试验,是我回顾了在学习单片机的时候使用的Tddebug集成开发软件使用方法,了解了汇编程序的开发过程。能够在Tddebug环境下进行编辑、编译、连接程序,掌握了INT 21H软件中断的调用DOS内部子程序的方法。但对于DOS环境下的汇编程序的编辑、编译、连接使用还不是很熟悉,只能是Tddebug集成软件开发环境下熟悉的编译连接运行。

实验二

实验名称:

I/O程序设计

实验目的:

1.理解软中断的调用方法及中断过程。

2.掌握INT 21H软件中断来调用DOS系统I/O子程序的方法。 3.掌握将存储在内存单元中的数据在屏幕上显示的方法。 4.掌握从键盘输入信息到内存的方法。

实验内容:

1.将指定数据区中一个字节的数据以十六进制数形式显示在屏幕上。 2.编程由键盘输入任意一个字符,将该字符的ASCII码值显示在屏幕上。 3.从键盘输入两个1位十进制数,计算二者之和,并将结果显示在屏幕上。 4.编程由键盘输入任意一位数,将该数以二进制数形式显示在屏幕上

实验步骤:

1.画出实验流程图。

2.运行Tddebug软件,选择Edit菜单编写实验程序

3.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。 4.使用Rmrun菜单中的Run运行程序,观察运行结果。

5.使用Rmrun菜单中的Debug调试程序。单步执行指令,观察各寄存器及数据区的内容。 更改数据区中的数据,考察程序的正确性

实验代码:

DATA SEGMENT

MES DB 'Show a as hex:',0AH,0DH,'$' SD DB 'a' DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX

MOV DX,OFFSET MES;显示提示信息 MOV AH,09H INT 21H MOV SI,OFFSET SD MOV AL,DS:[SI]

AND AL,0F0H ;取高4位 MOV CL,4 SHR AL,CL

CMP AL,0AH ;是否是A以上的数 JB C2 ADD AL,07H C2: ADD AL,30H

MOV DL,AL ;显示字符 MOV AH,02H INT 21H

MOV AL,DS:[SI]

AND AL,0FH ;取低4位 CMP AL,0AH JB C3

图2-1 一个字节数以十六进制数形式显示处理流

ADD AL,07H C3: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H

MOV AH,4CH INT 21H CODE ENDS END START

;显示字符

;返回DOS

实验结果:

代码运行结果:显示“61H” 心得体会:

本次实验要求我们将指定数据区的一个数据转换为其十六进制数,通过这次实验,我充分理解了什么是软中断,以及软中断的调用方法和中断过程,并了解了INT 21H软中断来调用DOS系统I/O子程序的方法,并知道如何将存储在内存单元中的素具显示在屏幕上。在老师的讲解过程中,我对试验提供的参考代码有了更深的了解,明白了如何进行调用软中断。

本文来源:https://www.bwwdw.com/article/9u5d.html

Top