微机原理及应用实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理及其应用上机实验报告
实验一 程序调试实验(顺序结构程序设计) 一、实验目的:
1.学习及掌握汇编语言源程序的基本结构,明确程序中各段的功能和相互之间的关系。 2.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。 3、熟悉和掌握DEBUG 常用命令的使用 二、实验要求:
1、上机前,要认真阅读前言和课本相关章节
2、上机前,画好流程图,编写好程序
3、上机时,注意出现的错误,记录下出错信息,翻译之
4、完成好实验报告 三、实验内容:
在内存TAB 开始的16个单元连续存放了0-15的平方值(0-225),任给一个数X(0 ≤ X ≤ 15),求X 的平方值,并把结果存放在Y 单元中。
(2).分析
X 平方的值是tab 为首地址且x 的值为有效地址中的值。 data segment
x db 8 y db data ends
stack segment para'stack' db 100 dup(0) stack ends code segment
assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax xor ax,ax
mov al,x
lea si,tab
add si,ax
mov al,[si]
mov y,al
mov ah,4ch
int 21h
code ends
end start
(3).程序调试:
4.心得体会
了解了顺序结构,掌握了程序的运行,调试。
实验二分支程序设计
一、实验目的:
熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法;掌握条件转移、无条件转移指令的使用方法。掌握分支程序设计、编写、调试和运行的方法。
二、实验要求:
1、上机前认真分析题意,找出算法,画出流程图,依据流程图,编好程序。
2、认真调试程序,对程序可能存在的所有分支都要进行运行,只有这样才能证明程序的正确性。
二、实验内容
1.判断X单元数据的奇偶性,若为奇数,将Y单元设置为0FFH,若为偶数,将Y单元清0。
(2).分析
将x值给寄存器al,al和1
数。
data segment
x dw 69h
y db
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov ax,x
and ax,01h
jz next1
mov y,0ffh
jmp next
next1:mov y,0
next:mov ah,4ch
int 21h
code ends
end start
(3).程序调试
(4).心得体会
掌握了add指令的用法,熟悉了分支结构。
2. 设计—个比较两个8位无符号数的大小、并把较小的数存人MIN单元的程序。假设这两个数分别存放在FIRST和SECOND单元中。
(2).分析
将first值赋给al,判断al与second的大小,将小的值给min。
data segment
first db 32h
second db 56h
min db
data ends
code segment
assume cs:code,ds:data start:mov ax,data
mov ds,ax
mov al,first
cmp al,second
jc next
mov bl,second
mov min,bl
jmp next1
next:mov min,al
next1:mov ah,4ch
开始
取first值给al
判断
al是否大
将al值给min将second值给min 结束
是
否
int 21h
code ends
end start
(3).程序调试
(4).心得体会
掌握了cmp指令的用法,加深了对分支结构的了解。
实验三循环程序设计
一、实验目的
掌握循环指令的使用方法;掌握实现单重、多重循环程序设计、编写、调试和运行的方法。
二、实验要求:
1、上机前认真分析题意,找出算法,画出流程图,依据流程图,编好程序
2、在调试程序的过程中,对出现的错误应记录它的英文提示,进行翻译,把更正的指令用其它颜色的笔记录的原程序清单的右边,便于比较。
三、实验内容:
1、从自然数1
并把统计的个数送入n单元,将累加和送入
data segment
n dw
sum dw
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov ax,0
mov bx,0
next: inc bx
add ax,bx
cmp ax,1000
jb next
mov n,bx
mov ax,sum
mov ah,4ch
int 21h
code ends
end start
2.内存地址BUFFER开始存放着10个带符号字节数组,编写程序求数组中正数、零和负数的个数,并分别将它们存于PLUS开始的单元。
(2).分析
将寄存器al,bx初始化,取buffer首地址给si,设置循环次数给cx,判断[si]的值正负还是零,
将正数个数值送给al,负数个数值送给bh,零的个数给bl,再将三个值存放在以plus 为首地址的地址中。
data segment
cnt equ $-buffer Array
plus db 3
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax