实验一 认识Tddebug集成操作软件实验日志
指导教师 曾素华 实验时间: 2013 年 04 月 02 日
学院 计算机科学与技术 专业 计算机科学与技术
班级 0411005 学号 2010211912 姓名 李新娱 实验室 s401
一、实验题目
认识Tddebug集成操作软件
二、实验目的浮云端
1. 熟悉汇编程序的开发过程。
2. 认识Tddebug集成操作软件。
3. 掌握在Tddebug集成环境中编辑、编译、连接汇编语言程序方法。
4. 掌握INT 21H软件中断来调用DOS内部子程序的方法
三、实验内容及说明
1.实验内容:数据传送实验
1) 表头怎么做编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。参见示例出程序。
2) 修改此程序,采用字符串传送指令完成。
2.实验中使用DOS功能调用(INT 21H):
参见教材《32位微型计算机原理与接口技术》89页
(金鱼风筝1)显示字符串
入口:AH=09H
调用参数:DS:DX=串首地址,‘$’为结束字符。
(2)返回DOS系统
入口:AH=4CH
调用参数:AL=返回码
四、实验主要步骤
要求一 数据传送实验
1.运行Tddebug软件,选择Edit菜单编写实验程序
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
3.使用Rmrun菜单中的Run运行程序,观察运行结果。
4.使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。单步执行数据传送指令后,观察各寄存器及数据区的内容。过程如下:
3) 按F7单步执行,在代码区中有一个三角,表示正在执行的指令。每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。
4) 检查内存数据区的内容,关键是找出用户程序的数据段和附加段:
● 方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区
● 方法2:选择菜单View| Dump,弹出内存数据显示窗口。
3) 查看执行结果:按Alt+F5,切换到用户窗口。
5. 更改数据区中的数据,考察、调试程序的正确性。
五、心得体会
通过本次试验我初步认识了汇编程序的开发过程,了解了Tddebug软件,在一开始的试验中反应太慢没有跟上老师,但在自主实践缓解通过与同学交流完成了实验,虽然对代码还不是很熟悉,但Tddebug软件的操作方法已经熟悉,并且掌握了在此环境的编辑、编译、链接汇编语言的程序方法和INT 21H的中断调用来调用DOS内部子程序的方法。
实验二 I/O程序设计 实验日志
指导教师 邹洋 实验时间: 2013 年 04 月 16 日
学院 计算机科学与技术 专业 计算机科学与技术
班级 0411005 学号 2010211912 姓名 李新娱 实验室 s401
一、实验题目
I/O程序设计
二、实验目的
1. 理解软中断的调用方法及中断过程。
2. 掌握INT 21H软件中断来调用DOS系统I/O子程序的方法。
3. 掌握将存储在内存单元中的数据在屏幕上显示的方法。风娃娃教案
4. 掌握从键盘输入信息到内存的方法。
三、实验要求
1.将指定数据区中一个字节的数据以十六进制数形式显示在屏幕上。
设计思路:首先将该数以十六进制数形式分解,然后将每一位分别转换为ASCII码送屏幕显示。其中0H~9H之间的数加30H,即可得0H~9H的ASCII码,而AH~FH的ASCII码,则需再加7H,参见表5-1。参考程序流程如图2-1所示。示例程序参见参考程序清单。
2.编程由键盘输入任意一个字符,将该字符的ASCII码值显示在屏幕上。
3.从键盘输入两个1位十进制数,计算二者之和,并将结果显示在屏幕上。
4.编程由键盘输入任意一位数,将该数以二进制数形式显示在屏幕上。
四、实验主要步骤
要求二 由键盘输入任意一个字符,将ASCII码值显示在屏幕上
1.画出实验流程图。
参考代码:;将指定数据区SD的数据以十六进制数形式显示在屏幕上
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
ADD AL,07H
C3: ADD AL,30H
MOV DL,AL ;显示字符
MOV AH,02H
INT 21H
好朋友在一起 MOV AH,4CH ;返回DOS
INT 21H
CODE ENDS
END START
2.运行Tddebug软件,选择Edit菜单编写实验程序
3.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
4.使用Rmrun菜单中的Run运行程序,观察运行结果。
5.使用Rmrun菜单中的Debug调试程序。单步执行指令,观察各寄存器及数据区的内容。
要求三 从键盘输入两个1位十进制数,计算二者之和。
code gment
assume cs:code
start:
mov cx,2
mov bl,0
next:
mov ah,1
int 21h
sub al,30h
jc next
cmp al,9h
ja next
add al,bl
daa
mov bl,al
mov dl,13
mov ah,2
int 21h
mov dl,10
int 21h
备品备件是什么 loop next
mov cl,4
mov dh,2
next1:
rol bl,cl
mov dl,bl
and dl,0fh
add dl,30h
mov ah,2
旧书不厌百回读的下一句 int 21h
dec dh
jnz next1
mov ah,1
int 21h
mov ah,4ch
int 21h
code ends
end start
五、心得体会
这次实验再次实践了Tddebug软件的使用方法,让我更深层次理解了软中断的调用方法及中断过程,掌握了INT 21H软件中断来调用DOS系统I/O子程序的方法和讲存储在内存单元中的数据在屏幕上显示的方法,并且掌握了从键盘输入信息到内存的方法。在这次实验中我还自己动手写了代码,虽然很多不会都咨询了同学,但后来还是成功实现了功能。
实验三 分支程序设计 实验日志
指导教师 邹洋 实验时间: 2013 年 04 月 28 日
学院 计算机科学与技术 专业 计算机科学与技术
班级 0411005 学号 2010211912 姓名 李新娱 实验室 s401
一、实验题目
分支程序设计
二、实验目的
1. 掌握比较指令、条件转移指令的用法
2. 掌握分支结构程序的组成
3. 掌握分支程序的设计、调试方法
三、实验要求
1.判断X的大小,并根据判断结果以不同方式分别显示。
2.键入一个数,判断数是否在5< X<24范围内,是输出标志0,不是输出-1。
3. 编写程序,在屏幕上显示一组菜单,根据键盘输入的菜单编号,提示你选择的菜单名。
4.从键盘输入一个字符,判断该字符是小写字母、大写字母、数字或其他字符,并给出相应的提示。
四、实验主要步骤
要求一判断X的大小,并根据判断结果以不同方式分别显示。
1. 画出实验流程图。
参考代码:
;设NUMBER单元的数X以及数值N1,N2均为单字节无符号数,请判断X的大小,并根据判断结果分别显示:N1<=X<=N2,或X<N1,或X>N2。
DATA SEGMENT USE16
MESG1 DB ' N1<=X<=N2 $ '
MESG2 DB ' X<N1 $ '
MESG3 DB ' X>N2 $ '
NUMBER DB 66 ;无符号数X
N1 EQU 22
N2 EQU 88丢失的反义词
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE, DS:DATA
BEG: MOV AX , DATA
MOV DS, AX
MOV DX, OFFSET MESG1
CMP NUMBER, N1
JAE NEXT ;X ≥ N1转
MOV DX, OFFSET MESG2
JMP DISP
NEXT: CMP NUMBER, N2
JBE DISP ;X ≤ N2转
MOV DX, OFFSET MESG3
DISP: MOV AH, 9
INT 21H ;显示结果信息