微机原理实验一实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1. 顺序程序设计
一、实验目的
⒈掌握算术运算指令的使用方法。
⒉学会顺序结构程序的编程方法。
⒊掌握DOS子功能调用方法。
⒋掌握汇编程序中变量的定义方法及变量值的查看方法。
⒌掌握DEBUG调试程序中D、T、P、R等调试命令的使用方法。
⒍掌握利用DEBUG调试程序查看F标志寄存器值方法。
二、实验要求
①提前完成2个程序的编制,并通过上机运行及调试,正确完成程序的编制。
②实验中注意D EBUG调试程序中T命令和P命令的使用,注意观察并记录程序中各个段的内存中的分配情况及各个中断处理子程序在内存中的起始存放地址。
③注意观察程序2和3中数据段中各数据的内存存放情况和程序执行中其值变化情况。
④用DEBUG调试程序调试所编程序,查看并记录每条指令内存占用情况及执行结果(包括F标志寄存各位值。
⑤注意观察并记录每条指令执行后CS和IP寄存器值变化情况,以加深对顺序程序的概念的理解。
三、实验内容
⒈编写程序并上机调试完成:从键盘上输入两个1位数,求出其乘积,并以十进制形式在显示屏上显示该成绩。
编程提示:
①两个1位十进制数的输入可通过DOS的1号子功能调用两次输入2个数字字符实现(将输入的2个数字字符的ASCII码减去30再相乘。
②成绩显示可通过2次调用DOS的2号子功能实现(注意乘积各位的分离可分别用除以10实现。显示的数值要加30H变成字符。)
运行结果截图如下:(这里使用了DOS模拟集成平台)
源程序代码如下:
CODE SEGMENT
ASSUME CS:CODE
START:MOV AH,01H
INT 21H
MOV BL,AL
MOV AH,02H
MOV DL,'*'
MOV AH,02H
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
SUB BL,30H
MUL BL
MOV BL,10
DIV BL
MOV CH,AL
MOV CL,AH
MOV AH,02H
MOV DL,'='
MOV AH,02H
INT 21H
MOV DL,CH
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,CL
ADD DL,30H
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
2已知变量X、Y、Z、V中存放的是有符号字型数据,编写程序,计算(V-(X*Y-540))/X,并把结果存放到DX和AX寄存器中。
运行程序及调试结果截图;(这里使用了DOS模拟集成平台)
源程序代码如下:
DATA SEGMENT
X DW 45H
Y DW 2H
Z DW 0H
V DW 124H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AX,X
IMUL Y
SUB AX,540
SBB DX,0
SUB V,AX
SBB Z,DX
MOV AX,V
MOV DX,Z
IDIV X
MOV AH,4CH
INT 21H
CODE ENDS
END START
编程提示:变量X、Y、Z、V在数据段中可定义成字型,并赋予具体初始数值。四、实验总结
通过本次实验,充分认识和了解了DOS操作系统的特点,同时掌握算术运算指令的使用方法,学会顺序结构程序的编程方法以及子功能调用方法。
学会了用DEBUG调试程序进行程序的调试和分析。