微机原理试验报告Word格式.docx
《微机原理试验报告Word格式.docx》由会员分享,可在线阅读,更多相关《微机原理试验报告Word格式.docx(40页珍藏版)》请在冰豆网上搜索。
(2)执行完MOVDS,DATA指令后,数据段寄存器DS的内容为(08D9)H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为(08D90)H、(08D91)H和(08D92)H。
(3)程序中第一条ADDAL,[BX]指令对应的机器代码为(0207)H,它是一个
(2)字节指令,注意观察执行该指令时IP值的变化情况;
该指令中源操作数的寻址方式为(寄存器间接寻址),该操作数所在存储单元的逻辑地址(DS):
(BX)为(08D9:
0001),其物理地址为(08D91)H;
执行完该指令后(AL)=(EA)_H,CF=(NC),OF=(NV),ZF=(NZ),SF=(NG),AF=(NA),PF=(PO);
若两操作数为无符号数,计算结果是否正确?
若两操作数为带符号数,计算结果是否正确正确?
若计算结果,结果是正数还是负数?
答:
若两操作数为无符号数,计算结果是正确;
若两操作数为带符号数,计算结果正确,结果是负数。
(4)执行完第二条ADDAL,[BX]指令后(AL)=(72)H,CF=(CY),OF=(OV),ZF=(NZ,)SF=(PL),AF=(AC),PF=(PE);
若两操作数为带符号数,计算结果是否正确?
:
若两操作数为带符号数,计算结果错误。
(5)指令MOVSUM,AL中目的操作数的寻址方式为(存储器直接寻址方式)。
该指令执行完后,注意观察(DS):
0003H单元中值的变化,该单元的值变为(72)H。
DATASEGMENT
NUMDB82H,68H,88H
SUMDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETNUM
MOVAL,[BX]
INCBX
ADDAL,[BX]
ADDAL,[BX]
MOVSUM,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
10.1.4步骤:
1)使用任意一种文本编辑器输入事先以手工编写好的汇编语言源程序,并将其存储为扩展名为.ASM的文件。
2)使用汇编程序(ASM、MASM或TASM)对.ASM的文件进行汇编。
假如相应YUN.ASM的文件存储在有汇编控制的文件夹中,文件夹在F盘SPSS文件夹中,则相应步骤:
“运行”中输入cmd在命令提示窗中输入F:
CD\文件夹名MASMYUN:
进行语法检查,生成相应.OBJ目标文件。
.
3)再输入;
LINKYUN:
生成相应.EXE可执行文件DEBUG.YUN.EXE输入相应命令如:
u、r、t,每次按Enter结束输入。
其中:
-T:
单步运行
-U:
反汇编
-D:
显示内存
-Q:
退出操作
10.1.5实验小结:
本次是学习汇编语言以来的第一次上机实践,在整个实践终于到了很多问题,同时在解决问题时我也受益匪浅。
首先因为第一次上机实践,虽然做了些准备,但由于还不是很清楚具体做法,因此很忐忑。
刚开始做时,不清楚具体步骤,只是模仿老师演示的过程。
将文件放在不同目录C:
下;
在模仿时,首先在命令提示窗口输入编辑好的YUN.ASM的文件,遇到报错:
命令提示窗口显示输入的文件名内容不存在;
分析得出是由于文件所未放有汇编控制的文件夹中;
解决方法:
将YUN.ASM文件直接拖入有汇编控制的文件夹中。
在进行LINKYUN命令时,显示:
warning:
nostacksegment;
therewas1errordetected。
此警告和错误显示堆栈段有问题,在此题中可以忽略。
另外通过不断操作,我还学到了一点小技巧:
将文件放在不同目录下时,一开始就在命令提示窗口输入目录名,然后通过“CD\文件夹名”进行操作。
虽然本次实验操作用时较长,效率相对低。
但通过本次实验,我熟练的掌握了汇编语言程序设计上机操作步骤及DEBUG调试工具的使用,成功的达到了实验目的。
10.1.6实验截图:
微机原理第二次试验
字符及字符串输入/输出实验
10.2字符及字符串输入输出与程序设计实验
10.2.1实验目的
1、学习和掌握字符及字符串的输入及输出方法。
2、掌握顺序程序设计的方法。
3、进一步掌握调试工具的使用方法
10.2.2实验预习要求
1、复习DOS功能调用中用于字符输入,输出,字符串输入和输出的调试方法。
2、复习BCD码运算调整指令。
3、根据10.2.3实验内容给出的实验框架,编写完整的源程序,以便实验时调试。
10.2.3实验内容
1从键盘输入两个一位十进制数,计算着两个数之和,并将结果在屏幕上显示出来。
(1)从键盘输入一位十进制数的方法。
通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下:
MOVAH,01H
INT21H
SUBAL,30H
(2)提示信息字符串的显示。
通过功能号为9的DOS功能键调用实现字符串显示,注意字符串的最后一个字符必须为$.指令格式如下:
MOV DX,OFFSET INFOR1
MOV AH,09H
INT 21H
(3)非压缩型BCD码加法调整指令的使用。
设从键盘输入的数值已存在寄存器AL,BL中,可用下列程序完成数据相加和调整操作:
XOR AH,AH
ADDALBL
AAA;
(4)计算结果的显示。
执行完AAA指令后,只需将AH和AL加上30H,并以此调用功能号为2的DOS功能调用来显示字符。
具体指令代码如下:
PUSHAX
MOVDL,AH
ADDDL,30H
MOVAH,02H
POPAX
MOVDL,AL
ADDDL,30H
MOVAH,02H
2源程序框架
DATASEGMENT
INFOR1DB"
pleaseinputthefirstdata(<
10):
$"
INFOR2DB0AH,0DH,"
pleaseinputtheSeconddata(<
INFOR3DB0AH,0DH,"
theResultis:
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETINFOR1
MOVAH,09H
INT21H
MOVAH,01H
SUBAL,30H
MOVBL,AL
MOVDX,OFFSETINFOR2
XORAH,AH
ADDAL,BL
AAA
PUSHAX
MOVDX,OFFSETINFOR3
POPAX
MOVDL,AH
ADDDL,30H
MOVAH,02H
MOVDL,AL
MOVAH,4CH
CODEENDS
ENDSTART
10.2.4实验截图:
2、从键盘输入两个一位十进制数,计算着两个数之积,并将结果在屏幕上显示出来。
PleaseInputtheFirstData(<
PleaseInputtheSecondData(<
TheResultis:
$"
MOVAX,DATA
MOVDS,AX
SUBAL,30H
MULBL
AAM
PUSHAX
实验截图:
10.2.5实验小结:
本次上机可以说是第一次实际编程操作,虽然实验指导书上已经给出程序框架,但还需要根据理解填完整程序方可操作。
在加法运算和乘法运算中遇到同一个问题:
首先填完整程序操作时,发现结果显示的是输入的第二个数的平方。
分析认为输入AL的第一个数未存放入BL中,导致第二次输入AL的数覆盖了第一次的数;
最终在别的同学的指导下我通过调整MOVBL,AL的位置从而解决了问题。
在进行LINKweiji2命令时,显示:
war