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