微机原理实验指导
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 MASM For Windows 的使用及顺序程序设计
一、实验目的
1、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。
2、熟悉masm for windows调试环境及DEBUG常用命令的使用
二、实验内容
1.DEBUG常用命令(U、R、D、E、F、T、G、Q)的操作使用
2.编程实现两个16位无符号数的加、减、乘、除运算。
有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。
三、实验设备
PC机一台、masm for windows 汇编语言集成环境
四、实验准备
1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。
2) 画出流程图。
3) 写出源程序。
4) 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。
五、实验步骤
1) 输入源程序。
2) 汇编、连接程序,生成 .EXE文件,执行文件,检查结果。
六、学生实验报告的要求
1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。
2) 说明程序中各部分所用的算法。
3) 说明主要符号和所用到寄存器的功能。
4) 上机调试过程中遇到的问题是如何解决的。
5) 对调试源程序的结果进行分析。
4) 说明标志位CF、SF和OF的意义。
DEBUG的常用命令
1、R 显示或修改寄存器的内容命令格式:-R
2、 D 显示存储单元的内容命令格式:-D[地址1, 地址2]
3、E修改存储单元的内容
命令格式:-E[地址1, 地址2]
4、U反汇编
命令格式:-U[地址1, 地址2]
5、T单步执行
命令格式:-T
6、G连续执行
命令格式:-G[=起始地址, 结束地址]
A小汇编
命令格式:-A
7、Q退出DEBUG,返回DOS
实验一源程序 EXAM1-2 .ASM
DATA SEGMENT
A D
B 34H,18H,2 DUP(0),’$’
B DB 56H,83H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX
MOV AL,A
MOV BL,B
ADD AL,BL
MOV AH,A+1
MOV BH, B+1
ADC AH, BH
MOV A, AL
MOV A+1, AH
MOV CX, 0004H
MOV DI, OFFSET A
MOV DX, [ DI]
ADD DI,03
NEXT: MOV AX, DX
AND AX,000FH
CMP AL,0AH
JB QQQ
ADD AL, 07H
QQQ: ADD AL, 30H
MOV [DI], AL
DEC DI
PUSH CX
MOV CL, 04
SHR DX, CL
POP CX
LOOP NEXT
MOV DX, OFFSET A
MOV AH, 09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
执行程序EXAM1-2·EXE,屏幕上显示结果:
9B8A
实验二分支、循环程序设计
一、实验目的
1) 掌握分支、循环程序的结构。
2) 掌握分支、循环程序的设计,调试方法。
二、实验内容
1 当X>0时
1.编程求Y值。其中Y= 0 当X=0时
-1 当X<0时
2、在一串给定个数的数中寻找最大值(或最小值),并且放至指定的存储单元。每个数用16位表示。
3、编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。其程序的逻辑框图如图3. 1所示。
三、实验准备
1) 阅读教材中有关顺序、分支程序的内容。
2) 按要求编写程序。
3) 对照实验步骤,将要测的数据事先画好表格。
四、实验设备
PC机一台
五、实验步骤
1) 输入源程序。
2) 汇编、连接程序,生成 .EXE文件,执行文件检查结果。
六、学生实验报告的要求
1) 列出源程序。
2) 将实验测得的数据与理论分析比较。
3) 总结为什么在设计分支程序时必须解决三个问题:判断、转向和定标号。
源程序清单:
EXAM2-1.ASM
data segment
buffer dw 10
y dw ?
data ends
code segment
asumme cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ax,buffer
or dx,ax
je zero
jns plus
mov bx,0ff h
jmp conti
zero: mov bx,0
jmp conti
plus: mov bx,1
conti: mov y,bx
code ends
end start
执行程序EXAM2-1·EXE:查看Y=1
[调试中应注意的问题]:应改变X(buffer单元)的值,分X>0,X<0,X=0三种情况执行.
源程序清单:
EXAM2-2
DATA SEGMENT
BUF DB’S=1+2×3+3×4+4×5+…+N(N+1)+…=’,’$’
RES DW 4 DUP(0),’$’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS, AX
MOV DX, OFFSET BUF
MOV AH, 09H