第四次汇编语言实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言实验报告
Assembly Language Programming Lab Reports
______________________________________________________________________________ 班级:姓名:学号:实验日期:
学院:专业:
实验顺序:原创:___ 实验名称:循环程序设计
实验分数:_______ 考评日期:________ 指导教师:
______________________________________________________________________________ 一.实验目的
1、掌握两种循环结构,DO WHILE的循环结构用CMP指令和条件转移指令构成。DO UNTIL用loop,loope,loopne这三种指令实现。
2、掌握以下指令
掌握循环指令,loop,loope,loopne。
掌握串处理指令,movs,cmps,scas,lods,stos 以及和他们联合使用的重复前缀指令rep,repz,repnz。
掌握伪指令 EQU 及操作符 '$'的使用。
掌握cmp,test和条件转移指令构成的循环结构。
3、掌握循环程序的设计过程,写出设计方法,给出程序框图,写出循环程序。
4、掌握多重循环中,可以由内层循环向外层循环跳转,或者直接向外层程序跳转,但是不允许从外向内跳转。
5、会用循环实现排序算法。
______________________________________________________________________________二.实验环境
操作系统:windows 8
编译程序:masm 5.0
______________________________________________________________________________三.实验原理
原理:
①loop循环
②两层、三层循环的嵌套
______________________________________________________________________________四.实验步骤及结果分析
1.简单的循环程序。
(1)写出y=5!的程序段。
代码:
data segment
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,5
mov al,1
mov bl,1
calculate:
mul bl
inc bl
loop calculate
mov y,ax
mov ah,4ch
int 21h
code ends
end start
运行截图:
(2)在程序为N的字节数组value中取出第一个负数存在BL中。代码:
data segment
value db 1,-6,2,3,0,-4,0,4,0,3 data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov bx,0
mov cx,m
let:
mov al,value[bx]
test al,80h
jnz exit
inc bx
loop let
exit: mov bl,al
mov ah,4ch
int 21h
code ends
end start
运行截图:
2.程序串处理
(1)查找CATI表中的字符@,找到后将其保存到SIGN单元,其位置值保存到ADDI单元。
代码:
extra segment
catt db 'asd@ddd'
sign db ?
addi dw ?
extra ends
code segment
assume cs:code,es:extra,ds:extra
start:
mov ax,extra
mov es,ax
mov al,'@'
lea di,catt
cld
mov cx,7
repnz scasb
dec di
mov al,es:[di]
mov sign,al
mov addi,di
mov ah,4ch
int 21h
code ends
end start
运行截图:
(2)在长度为N的字数组VALUE中取出第3个数保存到AX中。代码:
data segment
value dw 1,2,3,3,5,-1,10
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ax, value[4]
mov ah,4ch
int 21h
code ends
end start
运行截图: