成绩:
微机原理课内实验报告
课 程 名 微机原理与接口技术
实验题目 用汇编语言编写程序
学 部 机械与电子信息学部
专 业
学 号
姓 名
指导教师
日 期 2014/6/30
教师评语:
一实验内容
1,编程求一下运算:Y=X1-(X2+X3)
2,判断一个数是否为偶数
二实验流程
1实验流程:输入三个数X1,X2,X3,使Y=X1-(X2+X3).
2实验流程:测试某数是否是偶数。如该数是偶数,则把DL的第0位置0,否则将该位置1
三实验程序
1程序:编程求一下运算Y=X1-(X2+X3)
DATA SEGMENG
X1 DB 39H
X2 DB 21H
X3 DB 13H
Y DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET X2
MOV CL,[BX]
ADD CL,[BX+1]
MOV AL,[BX-1]
SUB AL,CL
MOV [BX+2],AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
②.程序:判断一个数是否为偶数
DATA SEGMENT
X DB 9H; 数据定义
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX; 段寄存器定义
MOV AL,X
SHR AL,1; 利用右移一位得到cf值,JB判断
JB NEXT; 为1则为奇数
AND DL,11111110B; 偶数DL第一个数置为0
JMP EXIT
NEXT:OR DL,000000001B; 奇数DL第一个数置为1
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
END START
四实验结果
实验一:
实验二
四结果分析
根据课内的实验要求,结合书上及老师讲的知识,我可以基本的按要求写出想要的汇编程序,但毕竟我们不是很深入的学习过,所以不免还有很好的小问题,比如在这两个程序中都没有外部硬件的输入与输出程序,不实为一个空缺点。不过在整体程序上讲,已经达到了实验的目的与要求,毕竟课内的实验主要目的就是在于程序的编写,而且是针对于电脑的程序,所以总的来说,我做的这两个实验是符合目的的及老师要求的。
第二篇:微机实验报告6
南京工程学院
电力工程学院
2011/ 20## 学年 第 1 学期
实 验 报 告
课程名称 微机原理及应用
实验项目名称 子程序设计
实验学生班级 监控091
实验学生姓名
实验时间 2011.10.30
实验地点 电力工程基础实验室8-216
实验报告成绩: 评阅教师签字:
年 月 日
电力工程学院二O##年制
说 明1. 实验报告为实验的重要考核依据之一, 每个实验必须定一份实验报告. 本实验报告原则上要求手写。
2.本实验报告各项内容的具体格式、字数可由指导教师根据实验具体情况提出具体要求。各项内容可另附页,为便于归档,附页尺寸不得大于本实验报告尺寸,并注意粘牢于附页粘贴处。
3. 实验报告封面中的 “实验名称” 应为实验教学大纲上所列的规范名称, “实验地点”应写出实验室的具体名称。请确认无误后再填写。
4. 实验报告的建议格式为:
一、实验目的和要求;
二、主要实验仪器和设备;
三、本次实验内容
(一)实验项目名称(按本次实验各项目填写)
1、原理或接线图
2、实验步骤及注意事项
3、实验预习过程中所遇到问题……
四、实验记录及数据处理(主要内容包括实验具体实施步骤、实验原始数据、 计算过程与结果、 数据曲线、 图表等。 具体格式按指导教师要求)
五、实验结论(主要内容包括本实验小结、 实验体会或疑问等。具体格式按指导教师要求)
5. 实验成绩由实验预习、实验表现、 实验报告三部分组成。其中前两项各占总成绩的30%。实验报告成绩依据报告的科学性、全面性、规范性及书写态度综合考核。 实验报告采用百分制, 占实验总成绩的40%, 教师请阅本报告后需签字并给出实验报告百分制成绩。
6. 实验报告需按要求时间以班级为单位交给指导教师,最长时间不得超过两周,实验报告如有明显抄袭者或不交者,实验总评成绩按 0 分记。
一、实验目的和要求
学习子程序的结构、特点以及子程序的设计和调试方法。
二、实验任务
学习使用汇编语言集成编译软件,验证及编写、调试实验内容。
三、主要实验备和软件
星研集成环境软件
四、实验内容
1、实验题目:编写求和的子程序,求数组ARRAY中所有元素之和并存于SUM单元之中。
2、程序清单:
SSEG SEGMENT STACK
DB 100 DUP(?)
SSEG ENDS
DATA SEGMENT
ARRAY DB 10,20,30,40
COUNT EQU $-ARRAY
SUM DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:SSEG
START: MOV AX,DATA
MOV DS,AX
MOV AX,SSEG
MOV SS,AX
LEA SI,ARRAY
MOV CX,COUNT
CALL SUM1
MOV SUM,AX
MOV AH,4CH
INT 21H
SUM1 PROC NEAR
CMP CX,0
JZ EXIT
MOV AX,0
AGAIN: ADD AL,[SI]
ADC AH,0
INC SI
LOOP AGAIN
EXIT: RET
SUM1 ENDP
CODE ENDS
END START
(3)、运行结果
加和之前,SUM=0
加和之后,SUM=100,调试程序成功。
(4)、分析与思考:此实验以寄存器为传递参数来实现子程序的运行,其实就是锻炼PROC和CALL指令的运用。
2、编写程序:
(1)实验题目: 设计一个子程序,功能是将一个字节的BCD码转换成二进制数。
说明:名称:BCD2BIN。
功能:将一个字节的BCD码转成二进制数。
所用寄存器:CX。
入口参数:AL存放两位BCD码。
出口参数:AL存放二进制数。
(2)、程序清单:SSEG SEGMENT STACK
DB 100 DUP(?)
SSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:SSEG
START : MOV AX,SSEG
MOV SS,AX
MOV AL,12H
CALL BCD2BIN
HLT
BCD2BIN PROC NEAR
PUSH CX
MOV CH,AL
AND CH,0FH
MOV CL,4
SHR AL,CL
MOV CL,10
MUL CL
ADD AL,CH
POP CX
RET
BCD2BIN ENDP
CODE ENDS
END START
(3)、运行结果:截屏
观察AL原来值为12H
观察得经过BCD2BIN子程序后,AL转换成二进制0CH,调试程序成功。
(4)、 分析与思考:此实验除了对子程序的运用,还着重运用了逻辑和运算移位指令,程序本身很简单。
3、编写程序:
(1)实验题目: 题1是寄存器传递参数,试利用存储单元传递参数的方法改写程序。
(2)、程序清单:SSEG SEGMENT STACK
DB 100 DUP(?)
SSEG ENDS
DATA SEGMENT
ARRAY DB 10,20,30,40
COUNT EQU $-ARRAY
SUM DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:SSEG
START: MOV AX,DATA
MOV DS,AX
MOV AX,SSEG
MOV SS,AX
CALL SUM1
MOV AH,4CH
INT 21H
SUM1 PROC NEAR
PUSH SI
PUSH CX
PUSH AX
LEA SI,ARRAY
MOV CX,COUNT
CMP CX,0
JZ EXIT
MOV AX,0
AGAIN: ADD AL,[SI]
ADC AH,0
INC SI
LOOP AGAIN
MOV SUM,AX
POP SI
POP CX
POP AX
EXIT: RET
SUM1 ENDP
CODE ENDS
END START
(3)、运行结果 截屏
加和之前
加和之后,查看结果为100,调试程序成功。
(4)、分析与思考:其实用存储器单元存储只要将源代码中几条程序移一下位置即可,再者,对原先寄存器AX,SI,,CX的值用进栈出栈进行了保护。
五、思考题
试编写一个求字变量绝对值的子程序。
程序清单: SSEG SEGMENT STACK
DB 100 DUP(?)
SSEG ENDS
DATA SEGMENT
X DW -278
RESULT DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:SSEG
START: MOV AX,DATA
MOV DS,AX
MOV AX,SSEG
MOV SS,AX
MOV AX,X
CALL TTESTT
HLT
TTESTT PROC NEAR
TEST AX,8000H
JZ NEXT
NEG AX
NEXT: MOV RESULT,AX
RET
TTESTT ENDP
CODE ENDS
END START
运行结果 截屏(调试成功)
六、实验小结
此次子程序设计主要在于对CALL和PROC指令的运用,难度不大。但此次试验还有一个收获就是熟悉星研的操作环境,用星研进行软调,和emu8086有很多相似之处,很好上手。