计算机应用实验报告.docx
《计算机应用实验报告.docx》由会员分享,可在线阅读,更多相关《计算机应用实验报告.docx(29页珍藏版)》请在冰豆网上搜索。
计算机应用实验报告
实验一乘法运算实验
一、实验目的:
1、了解调试程序DEBUG的常用命令和功能。
2、掌握多字节乘法运算程序的编写方法。
3、学会程序调试方法。
2、实验原理
序号
命令
功能
0?
?
?
?
?
?
显示Debug命令列表。
1?
?
?
?
?
a
汇编8086/8087/8088记忆码。
2?
?
?
?
?
c
比较内存的两个部分。
3?
?
?
?
d
显示部分内存的内容。
4?
?
?
?
e
从指定地址开始,将数据输入到内存。
5?
?
?
?
f
使用指定值填充一段内存。
6?
?
?
?
g
运行在内存中的可执行文件。
7?
?
?
?
?
h
执行十六进制运算。
8?
?
?
?
?
i
显示来自特定端口的1字节值。
9?
?
?
?
?
l
将文件或磁盘扇区内容加载到内存。
10?
?
m
复制内存块中的内容
11?
?
?
/n
为l或w命令指定文件,或者指定正在测试的文件的参数。
12?
?
o
向输出端口发送1个字节的值。
13?
?
p
执行循环、重复的字符串指令、软件中断或子例程。
14?
?
q
停止Debug会话。
15?
?
r
显示或改变一个或多个寄存器。
16?
?
?
?
s
在部分内存中搜索一个或多个字节值的模式。
17?
?
t
执行一条指令,然后显示所有寄存器的内容、所有标志的状态和Debug下一步要执行的指令的解码形式。
18?
?
?
u
反汇编字节并显示相应的原语句。
19?
?
?
w
将被测试文件写入磁盘。
20?
?
?
xa
分配扩展内存。
21?
?
?
xd
释放扩展内存。
22?
?
?
xm
映射扩展内存页。
23?
?
?
?
xs
显示扩展内存的状态。
三、实验内容:
将两个无符号数相乘,将结果数存入规定地址。
被乘数和乘数的存放地址及数据如下:
名称
地址
数据
被乘数
2000:
0000
2000:
0001
2A
30
乘数
2000:
0002
2000:
0001
15
1B
乘积
2000:
0004
2000:
0007
注意:
数据低位在前,高位在后。
四、实验报告内容:
1、实验用源程序:
开机选择“开始”→“运行”→输入“command”→输入“debug”调出debug应用程序。
Debug源程序:
D2000:
0000;查看部分内存内容
E2000:
00002A30151B;写入数据
D2000:
0000;查看输入后的数据
A回车;写程序
MOVAX,2000
MOVDS,AX
MOVAX,[0000]
MOVBX,[0002]
MULBX;让AX乘以DX,结果存入DX:
AX
MOV[0004],AX
MOV[0007],DX
INT20H;正常中断程序
Ctrl+M;退出编程,由键盘输入
G;运行程序
D2000:
0000;查看程序运行结果
2、实验结果分析
输出结果显示为72-6118-05结果正确。
实验中遇到的问题,在debug里输入程序要细心,如果输入有误为保证结果的正确应重新打开debug程序。
实验中发现输入的大小写对程序的结果没有影响。
实验二除法运算实验
一、实验目的:
1、了解调试程序DEBUG的常用命令和功能。
2、掌握多字节除法运算程序的编写方法。
3、学会程序调试方法。
二、实验内容:
将两个无符号数相除,将结果数存入规定地址。
被除数和除数的存放地址及数据如下:
名称
地址
数据
被除数
除数
2000:
0010~0013
2000:
0014~0015
2A3B4C5D
7C5D
商
余数
2000:
0016~0017
2000:
0018~0019
数据低位在前,高位在后。
三、实验报告内容:
1、实验用源程序
按照实验一中的方法调出debug:
Debug源程序:
D2000:
0000;查看部分内存内容
E2000:
00005D7C5D4C3B2A;写入数据
D2000:
0000;查看输入后的数据
A;写程序
MOVAX,2A3B
MOVDX,4C5D
MOVBX,7C5D
MOVAX,[0010]
MOVDX,[0012]
MOVBX,[0014]
DIVBX;被除数DX:
AX除BX,商存入AX,余数存到DX
MOV[0016],AX
MOV[0018],DX
INT20H;正常中断程序
Ctrl+M;退出编程,由键盘输入
G;运行程序
D2000:
0000;查看程序运行结果
2、实验结果分析
实验正确结果:
7D-FF9E-11
实验中应注意的问题,在输入数值时应高低位颠倒输入,程序运算时是先进后出。
遇到的问题:
当输入正序时得到的结果是EE-56E7-6F(为错误结果)。
实验三数据转换实验
一、实验目的:
1、进一步掌握DEBUG使用方法。
2、掌握数制转换程序的编写方法。
3、学会调试循环程序和子程序方法。
二、实验内容:
将单元2000:
0000~003中的8位十进制数35,26,38,74(数据高位在前,低位在后),转换成二进制数,存入单元2000:
0004~0007中。
在编写程序时,要充分利用循环程序和调用子程序的方法来简化程序设计,并注意循环的地址及子程序入口地址的设置方法。
三、实验报告内容:
1、实验用源程序
STACKSSEGMENTSTACK;堆栈段
DW128DUP();只有128个字节
STACKSENDS
DATASSEGMENT;数据段
D1DB10
;D2DB
;D3DB38H
;D4DB74H
DATASENDS
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS;初始化
MOVDS,AX
MOVAX,2000H
MOVDS,AX
MOVAX,2635H
MOVDI,0000H
MOV[DI],AX
MOVDI,0002H
MOVAX,7438H
MOV[DI],AX
MOVBL,10
MOVBX,0010
MOV[BX],AL
DO1MACROADD1,ADD2
MOVSI,CX
MOVDI,0000H
MOVCX,4
NEXT:
MOVAL,[DI]
SHRAL,4
MULBL
PUSHAX
MOVAL,[DI]
ANDAL,0FH
POPDX
XORAH,AH
XORDH,DH
ADDAL,DL
MOVSI,[CL+4]
MOV[DI+4],AL
INCDI
LOOPNEXT
ENDM
DO10H4H
DO115
DO126
DO137
MOVAX,4C00H;退出程序
INT21H
CODESENDS
ENDSTART
实验四显示字符串实验
一、实验目的:
1、掌握宏汇编语言源程序的编辑方法。
2、学会用MASM及LINK程序将源程序文件转换成可执行文件的方法。
3、学会调用DOS软中断功能来显示字符串的方法。
二、实验步骤:
1、利用全屏幕编辑程序来编辑源程序,文件扩展名为ASM,操作如下:
A>NE盘号:
文件名.ASM
2、利用MASM程序将源程序文件汇编成目标文件,目标文件扩展名为OBJ,操作如下:
A>MASM盘号:
文件名.ASM盘号:
文件名.OBJ
在编辑中发生错误,要用NE程序来修改源程序文件。
3、用LINK程序将目标文件转换成可执行文件,可执行文件扩展名为EXE,操作如下:
A>LINK盘号:
文件名.OBJ盘号:
文件名.EXE
4、在DOS环境下执行可执行文件。
三、实验内容:
按照宏汇编语言源程序格式的要求,编写一个文件,显示如下字符串:
Ilikemicrocomputerverymuch.
四、实验报告内容:
1、实验用源程序
STACKSSEGMENTSTACK;堆栈段
DW128DUP();只有128个字节
STACKSENDS
DATASSEGMENT;数据段
MSG1DB'Ilikemicrocomputerverymuch.','$'
DATASENDS
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS;初始化
MOVDS,AX
MOVDX,OFFSETMSG1
MOVAH,9
INT21H
MOVAX,4C00H;退出程序
INT21H
CODESENDS
ENDSTART
2、实验结果分析
实验显示出了“Ilikemicrocomputerverymuch.”
实验五显示字符串实验
一、实验目的:
1、进一步掌握字符串的显示方法。
2、掌握键盘信号的输入和分析方法。
3、进一步熟悉源程序的编写方法。
二、实验内容:
先使计算机提问下列问题:
Doyoulikethislesson(Y/N)
如果用户回答N,计算机回答:
Youshouldchangeyourinterest.
如果用户回答Y,计算机回答:
Youaregoodstudent.
三、实验报告:
1、实验用源程序:
STACKSSEGMENTSTACK;堆栈段
DW128DUP();注意这里只有128个字节
STACKSENDS
DATASSEGMENT;数据段
MSG1DB'Doyoulikethislesson(Y/N)','$'
MSG2DB10,'Youshouldchangeyourinterest.','$'
MSG3DB10,'Youaregoodstudent.','$'
DATASENDS
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS;初始化
MOVDS,AX
;请在这里添加您的代码
MOVDX,OFFSETMSG1
MOVAH,9
INT21H
MOVAH,1
INT21H
CMPAL,'Y'
JZY1
CMPAL,'y'
JZY1
CMPAL,'N'
JZY2
CMPAL,'n'
JZY2
Y1:
MOVDX,OFFSETMSG3
MOVAH,9
INT21H
JMPDONE
Y2:
MOVDX,OFFSETMSG2
MOVAH,9
INT21H
DONE:
MOVAX,4C00H;退出程序
INT21H
CODESENDS
ENDSTART
实验六数据排序实验
一、实验目的:
1、掌握比较数据大小的方法。
2、掌握由大到小排列数据的方法。
3、掌握显示某一数据区的方法。
二、实验内容:
先在数据区输入十个随机排列的数据,然后用气泡排序法把数据由大到小排列好,并显示在屏幕上。
然后改变数据的内容,再用同样的程序来排列,并显示出结果。
第一次排列的数据为:
41H,70H,03H,53H,88H,16H,20H,3FH,74H,8EH
第二次排列的数据为:
10H,78H,23H,04H,1AH,7AH,35H,4BH,9FH,0BH
显示结果:
班级,学号,名字
排序好的数据。
三、实验报告内容:
1、实验用源程序
STACKSSEGMENTSTACK;堆栈段
DW128DUP()
STACKSENDS
DATASSEGMENT;数据段
MSG1DB'Doyoulikethislesson(Y/N)','$'
MSG2DB10,'Youshouldchangeyourinterest.','$'
MSG3DB10,'Youaregoodstudent.','$'
DATASENDS
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS;初始化
MOVDS,AX
MOVDX,OFFSETMSG1
MOVAH,9
INT21H
MOVAH,1
INT21H
CMPAL,'Y'
JZY1
CMPAL,'y'
JZY1
CMPAL,'N'
JZY2
CMPAL,'n'
JZY2
Y1:
MOVDX,OFFSETMSG3
MOVAH,9
INT21H
JMPDONE
Y2:
MOVDX,OFFSETMSG2
MOVAH,9
INT21H
DONE:
MOVAX,4C00H;退出程序
INT21H
CODESENDS
ENDSTART
实验七显示字符串实验
一、实验目的:
1、掌握显示菜单的方法。
2、学会分析键盘输入数据的方法。
3、掌握编写宏指令和宏调用的方法。
二、实验步骤:
先在屏幕上显示下列菜单
Whatitemdoyouwanttoknow
1.Myname
2.Myage
3.Myinterestingwork
4.Myfamily
Pleaseinputthenumber:
然后根据输入的数据,分别回答你的姓名,年龄,感兴趣的工作和家庭成员,具体回答内容由同学自己拟定。
在程序中尽量采用宏指令,并注意程序设计的技巧。
三、实验报告内容:
1、实验用源程序
STACKSSEGMENTSTACK;堆栈段
DW128DUP()
STACKSENDS
DATASSEGMENT;数据段
M01DB'Whatitemdoyouwanttoknow','$'
M02DB10,28DUP(8),'1.Myname','$'
M03DB10,28DUP(8),'2.Myage','$'
M04DB10,28DUP(8),'3.Myinterestingwork','$'
M05DB10,28DUP(8),'4.Myfamily','$'
M06DB10,28DUP(8),'Pleaseinputthenumber:
','$'
M07DB10,28DUP(8),'LiJuan','$'
M08DB10,28DUP(8),'22','$'
M09DB10,28DUP(8),'playballs.','$'
M10DB10,28DUP(8),'Myparentsandme.','$'
DATASENDS
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS;初始化
MOVDS,AX
PRTMACROX
MOVDX,OFFSETX
MOVAH,9
INT21H
ENDM
IPTMACRO
MOVAH,1
INT21H
ENDM
IFGOMACROX,Y
CMPAL,X
JZY
ENDM
PRTM01
PRTM02
PRTM03
PRTM04
PRTM05
PRTM06
IPT
IFGO'1',Y1
IFGO'2',Y2
IFGO'3',Y3
IFGO'4',Y4
Y1:
PRTM07
JMPDONE
Y2:
PRTM08
JMPDONE
Y3:
PRTM09
JMPDONE
Y4:
PRTM10
DONE:
MOVAX,4C00H;退出程序
INT21H
CODESENDS
ENDSTART
实验八时钟显示实验
一、实验目的:
1、了解计算机中时钟数据的存取方法。
2、掌握时钟显示的编写方法。
3、进一步掌握BIOS和DOS中子程序的调用方法。
二、实验内容:
在计算机屏幕的右上角显示时钟值,直到按下一个键再返回DOS。
三、实验报告内容:
1、实验用源程序:
DATASEGMENT
WHOURDB0;秒表的时、分、秒、毫秒
WMINDB0
WSECDB0
WMSECDB0
OLD1CHDD0
SIGNALDB0
COUNTDW0
;---------------------------------------------------------------------------------------------------------------
CHOURDB0;闹钟的时、分、秒
CMINDB0
CSECDB0
;-----------------------------------------------------------------------------------------------------------------
SPACEDB2000DUP('')
PATTERNDB6DUP(''),0C9H,26DUP(0CDH),0BBH,6DUP('')
DB6DUP(''),0BAH,26DUP(20H),0BAH,6DUP('')
DB6DUP(''),0C8H,26DUP(0CDH),0BCH,6DUP('')
;----------------------------------------------------------------------------------------------------------------
DBUFFERDB8DUP(':
'),12DUP('')
DBUFFER1DB20DUP('')
DBUFFER2DB11DUP(':
'),15DUP('')
STR1DB0DH,0AH,'INPUT''M''TONEXT-STATE,INPUT''Q''TOEXIT:
$',0DH,0AH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACKS
;-------------------------------------------------------------------
PUSHA1MACRO
PUSHDS
PUSHAX
PUSHBX
PUSHCX
PUSHDX
ENDM
POPA1MACRO
POPDX
POPCX
POPBX
POPAX
POPDS
ENDM
;图形化界面设计
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,0003H;设置显示方式为40*25彩色文本方式
INT10H
LEADX,STR1;显示提示信息
MOVAH,9
INT21H
MOVBP,OFFSETSPACE
MOVDX,0B00H
MOVCX,1000
MOVBX,0000H
MOVAX,1300H
INT10H;显示字符串,定义显示方式
;---------------------------------------------------------------
;主程序
LP1:
MOVAH,1;从键盘输入单个字符
INT21H
CMPAL,'M';AL='M'?
JNELP5
CALLDATE;显示系统日期
LP2:
MOVAH,1;从键盘输入单个字符
INT21H
CMPAL,'M';AL='M'?
JNELP5
CALLTIME;显示系统时间
LP3:
MOVAH,1;从键盘输入单个字符
INT21H
CMPAL,'M';AL='M'?
JNELP4
CALLSTOPWATCH;显示秒表
LP4:
MOVAH,1;从键盘输入单个字符
INT21H
CMPAL,'M';AL='M'?
JNELP5
CALLRING
LP5:
CMPAL,'Q';AL='Q'?
JNELP1
MOVAH,4CH;返回DOS状态
INT21H
;---------------------------------------------------------------
;显示日期子程序
DATEPROCNEAR
DISPLAY9:
MOVAH,2AH;取日期CX:
DH:
DL=年:
月:
日AL=星期
INT21H
MOVSI,0
MOVAX,CX
MOVBX,100
DIVBL
MOVBL,AH
CALLBCDASC1;日期数值转换成相应的ASCII码字符
MOVAL,BL
CALLBCDASC1
INCSI
MOVAL,DH
CALLBCDASC1
INCSI
MOVAL,DL
CALLBCDASC1
MOVBP,OFFSETDBUFFER1
MOVDX,001DH
;;;;;;;;;;L;;;;;;;;;;;;;
MOVCX,20
MOVBX,004EH
MOVAX,1301H
INT10H
MOVAH,02H;设置光标位置
;;;;;;;;222
MOVDX,0900H
MOVBH,0
INT10H
MOVBX,0018H
REPEA:
MOVCX,0FFFFH;延时
REPEAT:
LOOPREPEAT
DECBX
JNZREPEA
MOVAH,01H;读键盘缓冲区字符到AL寄存器
INT16H
JEDISPLAY1