汇编语言程序设计上机实验报告(实验三)-循环程序设计
汇编实验2-循环程序设计-实验报告

汇编实验2-循环程序设计-实验报告一、实验目的1、了解循环程序设计的方法2、理解汇编语言中循环指令的使用3、掌握汇编语言中常用的循环结构二、实验原理1、循环指令循环指令是计算机中常用的一种控制结构,其作用是重复执行一定的操作。
在汇编语言中,常用的循环指令有LOOP、LOOPE、LOOPNE等,具体功能如下:(1)LOOP:重复执行指定次数的操作;(2)LOOPE:执行操作直到CX寄存器为0或ZF寄存器为1;(3)LOOPNE:执行操作直到CX寄存器为0或ZF寄存器为0。
LOOP指令的语法格式如下:LOOP label其中,label表示循环的目标地址。
2、循环结构循环结构是计算机程序设计中常用的一种结构,其基本形式包括:while、do...while、for等。
在汇编语言中,常用的循环结构有以下两种:(1)无限循环结构:该结构适用于需要不停顿地进行某项操作的情况,底层逻辑基于测试指令;(2)计数器循环结构:该结构适用于需要循环指定次数的情况,底层逻辑基于循环指令。
三、实验内容1、使用循环指令实现计算1~10的和;2、使用循环结构实现计算1~10的和。
四、实验步骤1、使用循环指令实现计算1~10的和。
(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。
2、使用循环结构实现计算1~10的和。
(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。
五、实验结果(1)使用循环指令实现计算1~10的和MOV CX,10MOV AX,0LOOP label1ADD AX,CXDEC CXJNZ label1label1:MOV sum,AX(2)使用循环结构实现计算1~10的和MOV CX,10MOV AX,0label2:ADD AX,CXDEC CXJNZ label2MOV sum,AX六、实验总结本次实验实现了两种不同的循环方式,分别使用了循环指令和循环结构。
汇编语言循环程序实验报告

一、实验目的(1) 加深对循环结构的理解;(2) 掌握循环程序的设计方法;(3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
二、实验内容1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。
同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。
2.设STR字符串是以0结尾。
试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。
3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。
三、算法描述流程图实验内容1、2、3的流程图分别为图1、图2、图3。
图1 图2 图3四、实验步骤1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。
同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。
1)输入源程序:DATA SEGMENTBUF DW 23,123,-12,-210,45,0,90,-453BUF1 DW 8 DUP(0)BUF2 DW 8 DUP(0)A DW ?B DW ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXLEA BX, BUFLEA SI, BUF1LEA DI, BUF2MOV A,0MOV B,0MOV CX,8L0: MOV AX,[BX]CMP AX,0JGE L1MOV [DI],AXADD DI,2INC BJMP NEXTL1: MOV [SI],AXADD SI,2INC ANEXT: ADD BX,2LOOP L0MOV AH, 4CHINT 21HCODE ENDSEND START2)运行程序。
循环程序设计_实验报告

一、实验目的1. 理解循环程序设计的基本原理和方法。
2. 掌握不同编程语言中循环结构的实现方式。
3. 学会使用循环程序解决实际问题。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.8.03. 编程工具:PyCharm三、实验内容1. 循环结构的基本概念循环结构是程序设计中的一种常见结构,用于重复执行一段代码。
在Python中,常见的循环结构有while循环、for循环和嵌套循环。
2. while循环while循环是一种基于条件的循环结构,当条件满足时,循环体中的代码会被重复执行。
实验示例:```pythoni = 0while i < 5:print(i)i += 1```3. for循环for循环是一种基于迭代对象的循环结构,通常用于遍历列表、元组、字符串等可迭代对象。
实验示例:```pythonfor i in range(5):print(i)```4. 嵌套循环嵌套循环是指在循环体内部再嵌套一个循环结构。
实验示例:```pythonfor i in range(3):for j in range(3):print(f"i={i}, j={j}")```5. 循环控制语句循环控制语句用于改变循环的执行流程,包括break、continue和pass。
实验示例:```pythonfor i in range(5):if i == 3:breakprint(i)```6. 循环程序解决实际问题(1)计算1到100的偶数之和```pythonsum = 0for i in range(1, 101):if i % 2 == 0:sum += iprint(sum)```(2)判断一个整数是否为水仙花数```pythonnum = int(input("请输入一个整数:")) temp = numsum = 0while temp > 0:digit = temp % 10sum += digit 3temp //= 10if sum == num:print(f"{num}是水仙花数")else:print(f"{num}不是水仙花数")```四、实验总结通过本次实验,我对循环程序设计有了更深入的了解。
循环程序设计实验

实验三分支、循环程序设计实验一、实验目的1.掌握分支程序的结构。
2.掌握分支程序的设计、调试方法。
3. 掌握循环结构程序设计、调试方法的方法。
二、实验设备TDN86/88教学实验系统一台。
三、实验内容及步骤1.已知有一个长x个字的数据块,存放在以0202H:1000H开始的存储区域内。
试编写一个完整的汇编语言程序,将该数据块复制到以0202H:1008H开始的存储区内。
(根据x的大小,判断从首地址,还是末地址传送)实验步骤:(1)输入程序并检查无误,经汇编、连接后装入系统。
(2)在0202H:1000H开始的X个单元中依次存入数据,即:E0202:1000↙,并输入01、02、03、04、05、06、07、08……。
(3)G=0000:2000↙,运行以上程序(4)D0202:1008↙,显示结果为:01、02、03、04、05、06、07、08……。
(5)反复试几组数,考察程序的正确性。
2.在ADDR开始的单元中存放着一个字,将字中1的个数存入COUNT单元中。
算法:要测出1的个数就应逐位比较,可根据最高有效位是否为1来计数,然后用移位的方法把各位数逐次移到最高位去。
可以用测试字是否为0来作为结束条件,这样可缩短程序的执行时间,对不同的字循环次数不同,因此采用当型循环结构。
实验步骤(1)编制实验程序输入程序并检查无误,经汇编、连接后装入系统。
(2)用U0000:2000查看 MOV AX,XXXX(DATA)语句,即得到数据段段地址DS=XXXX用E命令EXXXX:0000↙,输入数据39,A3(3)G=0000:2000↙,运行实验程序。
(4)D XXXX:0002↙,显示应为结果________。
(5)反复试几组数,考察程序的正确性。
3.在当前数据段(DS决定),偏移地址为DATAB开始的顺序20个单元中,存放着某班80名同学某门考试的成绩。
编写程序统计大于等于90分;80-89分;70-79分;60-69分;小于60分的人数各位多少,并将结果放在同一数据段,偏移地址为BTRX开始的顺序单元中。
汇编上机实验报告

汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。
实验内容:实验一:汇编程序的简单输入输出1.编写一个汇编程序,要求从键盘输入两个整数,然后将其相加,并将结果输出到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验二:汇编程序的条件跳转1.编写一个汇编程序,要求从键盘输入一个整数,判断其是否大于10,若是,则将其打印到屏幕上;否则,将其乘以5并打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验三:汇编程序的循环1.编写一个汇编程序,要求计算1到10的累加和,并将结果打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验四:汇编程序的数组操作1.编写一个汇编程序,要求定义一个长度为10的数组,并将数组中的值初始化为0,然后利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验结果:实验一:汇编程序的简单输入输出编写的汇编程序通过键盘输入两个整数,实现了相加并将结果输出到屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验二:汇编程序的条件跳转编写的汇编程序通过键盘输入一个整数,根据条件判断,实现了将输入数大于10时打印在屏幕上,否则将其乘以5并打印在屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验三:汇编程序的循环编写的汇编程序通过循环计算1到10的累加和,并将结果打印在屏幕上。
程序运行正常,输出结果与预期一致。
实验四:汇编程序的数组操作编写的汇编程序通过定义一个长度为10的数组,并将数组中的值初始化为0,利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
汇编语言、微机原理、接口技术-实验三:循环程序实验

图一:直接选择排序
图二:冒泡排序
三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等
基本要求源代码:
冒泡排序关键代码:
mov cx,4 ; CX length-1
mov si,offset a ; DI string pointer
INC SI jna j1
loop lp3 xchg al,[si+2]
HLT mov [si],al
A DW '5','7','1','9','2' inc bl
; si string pointer j1:
;cx length-1 inc si
sort proc inc si
lp2: loop lp1
计算机硬件实验室实验报告
课程名称:
姓名
学号
班级
成绩
设备名称及软件环境
Windows XP操作系统emu8086仿真器proteus仿真器
实验名称
[0003]循环程序实验
实验日期
2012/11/6
一.实验内容
1.实现内存数据访问,用两种方法对五个字从大到小排序
2.扩展要求
1.用冒泡法时快排
2.理论分析或算法分析
思考内容:冒泡排序之所以能实现快速排序,是每一次排序都将最大或最小的放在最后或最前,并且有个来统计交换的次数,一旦交换的次数为0时直接退出循环。
五.结论\
完成了本次实验要求的实验内容。学会了实现内存数据访问,用两种方法实现对五个字从大到小排序
报告提交日期
汇编语言程序设计上机实验报告(实验三)-循环程序设计

汇编语言程序设计上机实验报告(实验三)一、实验题目、内容及要求:一、实验题目、内容及要求:题目:循环程序设计内容:编写一程序,要求从键盘接收一个4位十六进制数,在终端上显示与它等值的二进制数。
二进制数。
要求:实验前要作好充分准备,包括程序清单、调试步骤、调试方法,对程序结果的分析等。
本实验要求在EDIT 下编写完整的汇编语言程并生成可执行文件运行。
下编写完整的汇编语言程并生成可执行文件运行。
二、实验时间及地点二、实验时间及地点日期:日期: 2011/11/21 节次:节次: 7.8 地点:地点:电子实验楼二楼电子机房电子实验楼二楼电子机房 三、实验目的三、实验目的通过本实验掌握DOS 系统功能调用功能,掌握循环程序设计的方法;学会编写循环结构程序。
构程序。
简述在实验过程中遇到的问题和解决的方法:简述在实验过程中遇到的问题和解决的方法:1、问题:遇到死循环解决方法:程序显示disp 中发现执行int int 21h 21h 会修改al 的值,避免这种情况的方法就是使用堆栈段。
2、问题:调试中出现no data segment 解决方法:start 开始时没有将数据段的IP 地址赋给dx 。
data segment 3、问题:可执行,结果为乱码解决方法:数据划分比较的粗,没有系统的将数据系统划分。
系统划分:<30h other 30h-39h num 39h-41h other 41h-46h big zi mu 46h-61h other 61h-67h small zi mu >67h other 运行结果:(要求用“抓图软件”抓程序的运行结果)(要求用“抓图软件”抓程序的运行结果)结果分析及实验体会:结果分析及实验体会:1、结果0001001000110100是十六进制数1234转化而来。
十六进制数通过ASCII码对照转换为二进制数。
A~F----- -57hA~ f----- -57h0~9 ------ -37h2、学习应用了循环指令并了解了其特点:A、循环指令不影响标志位B、其功能为使寄存器CX的值减1,如果结果不等于0,则循环至标号,否则顺序执行。
汇编语言程序设计 实验报告书

掌握冒泡排序放进行循环程序设计的方法,掌握XCHG、LOOP、JAE等指令的应用
汇编语言程序设计实验报告书
学号:姓名:学习中心:
课程名称
实验项目
实验项目类型
验证
演示
综合
设计
其他
指导老师
成绩
一、实验目的:
(1)熟练掌握循环程序设计的方法和要点
(2)掌握冒泡排序放进行循环程序设计的方法
(3)掌握XCHG、LOOP、JAE等指令的应用
实验内容
(1)用全屏编辑软件建立源程序
(2)用masm.exe汇编语言对源程序进行汇编,形成目标文件
mov al,[si]
cmp al,[si-1]
jae noxchg
xchg al,[si-1]
mov [si],al
noxchg:
dec si
loop lp2
pop si
pop cx
loop lp1
mov ah,4ch
int 21h
code ends
end start
2.用masห้องสมุดไป่ตู้编译
连接
DEBUG
(3)用link.exe连接程序对目标程序进行连接,形成可执行文件
(4)用DEBUG对连接通过的可执行程序进行调试
三、实验过程原始数
1.源程序
n=100
stack segment stack 'stack'
dw 100h dup(?)
top label word
stack ends
data segment
mov cx,databuf
lea si,databuf+2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、学习应用了循环指令并了解了其特点:
A、循环指令不影响标志位
B、其功能为使寄存器CX的值减1,如果结果不等于0,则循环
至标号,否则顺序执行。
程序1:
data segment
input1 db ' please input your numbers:',0dh,0ah,'$'
input2 db 'the binary number is :',0dh,0ah,'$'
input3 db ' your data is wrong,please input again:',0dh,0ah,'$'
enter db 0dh,0ah,'$'
data ends
code segment
汇编语言程序设计上机实验报告(实验三)
一、实验题目、内容及要求:
题目:循环程序设计
内容:编写一程序,要求从键盘接收一个4位十六进制数,在终端上显示与它等值的二进制数。
要求:实验前要作好充分准备,包括程序清单、调试步骤、调试方法,对程序结果的分析等。本实验要求在EDIT下编写完整的汇编语言程并生成可执行文件运行。
or bl,al
jmp Again
remind:mov ah,09h
lea dx, input3
int 21h
jmp back
stmov:mov ah,09h
lea dx,enter
int 21h
lea dx, input2
int 21h
mov cx,10h
clc
loopst:mov al,30h
shl bx,1
adc al,00
mov ah,02h
mov dl,al
int 21h
loop loopst
back: mov ah,4chdat segment
code ends
end start
程序2:
input db 'please input your numbers:$'
error db 'your data is wrong,please input again:$'
disp1:
mov ah,2
int 21h
disp2:
mov ah,2
int 21h
disp3:
mov ah,9
int 21h
loop next
mov ah,4ch
int 21h
cod ends
end startint 21h
46h-61h other
61h-67h small zi mu
>67h other
运行结果:(要求用“抓图软件”抓程序的运行结果)
结果分析及实验体会:
1、结果10100是十六进制数1234转化而来。十六进制数通过ASCII码对照转换为二进制数。
A~F----- -57h
A~ f----- -57h
2、问题:调试中出现no data segment
解决方法:start开始时没有将数据段的IP地址赋给dx。data segment
3、问题:可执行,结果为乱码
解决方法:数据划分比较的粗,没有系统的将数据系统划分。
系统划分:
<30hother
30h-39hnΒιβλιοθήκη m39h-41hother
41h-46h big zi mu
cmp al,'9'
ja disp1
sub al,30h
or bl,al
jmp Again
disp1: cmp al,40h
jbe back
cmp al,'F'
ja disp2
sub al,37h
or bl,al
jmp Again
disp2: cmp al,'f'
ja remind
sub al,57h
二、实验时间及地点
日期:2011/11/21节次:7.8地点:电子实验楼二楼电子机房
三、实验目的
通过本实验掌握DOS系统功能调用功能,掌握循环程序设计的方法;学会编写循环结构程序。
简述在实验过程中遇到的问题和解决的方法:
1、问题:遇到死循环
解决方法:程序显示disp中发现执行int 21h会修改al的值,避免这种情况的方法就是使用堆栈段。
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov ah,09h
lea dx, input1
int 21h
mov cl,04h
mov bx,00h
clc
Again: mov ah,01h
int 21h
cmp al,0dh
jz stmov
shl bx,cl
enter db 0dh,0ah,'$'
dat ends
cod segment
assume cs:cod,ds:dat
start:mov ax,0
mov ax,dat
mov ds,ax
mov ah,9
mov dx,offset input
int 21h
next:mov ah,1
int 21h
cmp al,0dh
other:
mov dx,offset error
jmp start
bigzm:
sub al,37h
jmp save
save: mov cl,4
shl bx,cl
add bl,al
jmp next
disp: mov cx,16
next: shl bx,1
jc disp1
mov dl,30h
jmp disp2
jz disp
cmp al,30h
jb other
cmp al,39h
jbe num
cmp al,41h
jb other
cmp al, 46h
jbe bigzm
mov al,61h
jb other
cmp al,67h
ja other
sub al,57h
jmp save
num:
sub al,30h
jmp save