微机原理与接口技术实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与接口技术》
上机报告
学院:机电学院指导教师:胡勇学号:631424210229 姓名:鞠其林
实验一初级程序的编写与调试实验
、实验目的
1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序.
2、深入了解数据在存储器中的存取方法, 及堆栈中数据的压入与弹出
3、掌握各种寻址方法以及简单指令的执行过程.
二、实验内容
1、设堆栈指针SP=2000H,AX=3000H,BX=5000H请, 编一程序段将AX的内容和BX 的内容进行交换. 请用堆栈作为两寄存器交换内容的中间存储单元, 用DEBUG调试程序进行汇编与调试.
程序:
MOV AX,3000
MOV BX,5000
MOV SP,2000
PUSH AX
PUSH BX
POP AX
POP BX
HLT
2、设AX=0002H,编一个程序段将AX的内容乘10, 要求用移位的方法完成程序:
MOV AX,0002 MOV BX,AX MOV CL,2 SHL AX,CL ADD AX,BX MOV
CL,1 SHL AX,CL HLT
三、心得体会
从这个程序的编辑过程中我感受到了汇编语言的强大,很直观的就可以读懂程
序的含义,但代码比较难记,而且语法严谨,我调试的过程中犯了一点错误,
修改的次数较多,希望我以后可以不再犯同样的错误,也是因为我练的比较的 少,还很生疏,我以后一定多加练习,把汇编学好 实验二 加法及判断程序的编写与调试
、实验目的 1、熟练掌握编写汇编语言源程序的基本方法和基本框架
2、学会编写顺序结构 , 分支结构和循环结构的汇编程序
3、掌握程序中数据的产生与输入输出的方法. 二、实验内容
1、用汇编语言编写一个加法程序:
1325+9839
请用ASCII 码的形式将加数与被加数存放在数据区DATA1和DATA2中, 并将相加结果显示输出.
程序:
DATA SEGMENT
DATA1 DB '5','2','3','1'
DATA2 DB '9','3','8','9'
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
DB 200 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SI,DATA1
LEA DI,DATA2
MOV CX,4
MOV AH,0
NEXT:
MOV AL,[SI]
ADC AL,[DI]
ADC AL,AH
MOV AH,0
AAA
ADD AL,30H
MOV [DI],AL
INC DI
INC SI
LOOP NEXT
MOV CX,5
ADD AH,30H
MOV [DI],AH
NEXT1:MOV DL,[DI]
MOV AH,02
INT 21H
DEC DI
LOOP NEXT1
MOV AH,4CH INT 21H CODE ENDS
END START
2、假设有一组数据:5,-4,0,3,100,-51, 请编写一程序, 判断:每个数是否大于
0?等于0?还是小于0?并输出其判断结果, 即
即:
1 当X>0
Y=
0 当X=0
-1 当X<0
程序:
DATA SEGMENT
DATA1 DB 5, -4, 0 ,3,100,-51
STRING1 DB'Y=1','$'
STRING2 DB'Y=0','$'
STRING3 DB'Y=-1','$'
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
DB 200 DUP(?)
STACK CODE ENDS SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START:
MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX LEA SI,DATA1 MOV CX,6
NEXT: MOV AL,[SI]
CMP AL,0 JZ NEXT1 JNS NEXT2 JS NEXT3
NEXT1:
MOV DX,OFFSET STRING2 MOV AH,09H INT 21H JMP NEXT4
NEXT2:
MOV DX,OFFSET STRING1 MOV AH,09H INT 21H JMP NEXT4
NEXT3: MOV DX,OFFSET STRING3
MOV AH,09H INT 21H NEXT4:
INC SI
LOOP NEXT
MOV AH,4CH INT 21H
CODE ENDS
END START
三、心得体会通过程序汇编,熟练掌握运用轻松汇编软件的方法,学会了使用循环位移指令的方法,并巩固了对各项指令运用。某些地方掌握不牢,有待学习提高。
实验三大小写字母互换程序的编写与调试
一、实验目的:
(1)、学习子程序的定义和调用方法。(2)、掌握子程序设计、调试。
二、实验内容:对内存中给定的几个无符号字节数,求其最大值和最小值。
3、实验步骤:
(1)在内存4000H~4007H中写入任意八个字节的数。(2 开始运行程序。
4、实验运行结果:编程代码如下所示:
ORG 0100H
START0: MOV SI,4000H
MOV CX,0008
MAXMIN:MOV BH,[SI]
MOV BL,BH
CON2: LODSB
CMP AL,BH
JNA X1
MOV BH,AL
JMP X2