汇编语言实验5-循环程序设计
- 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 xp
编译程序:masm 5.0
______________________________________________________________________________
三.实验原理
1、loop指令循环
2、二层、三层循环嵌套
______________________________________________________________________________
四.实验步骤及结果分析
1.简单的循环程序。
(1)写出y=5!的程序段。
data segment
info db 'The 5!=$'
t db '0123456789ABCDEF'
data ends
stack segment
db 512 dup(?)
stack ends
code segment
assume cs:code,ds:data
start:
mov ax,data mov ds,ax
mov ax,stack mov ss,ax
.
mov sp,512
mov dx,offset info
mov ah,9 int 21h
mov cx,4
mov al,1
mov bl,2
x:
mul bl inc bl
loop x mov cx,4
y:
push cx mov cl,4
rol ax,cl mov si,ax
and ax,0fh
mov bx,ax
mov dl,t[bx]
mov ah,2
int 21h
mov ax,si
pop cx
loop y
mov ah,4ch int 21h
code ends
.
end start
运行截图:
(2)在程序为N的字节数组value中取出第一个负数存在BL中。
代码见6-1.asm和6-2.asm
data segment
info db 'The ID of th first negative number is:$'
t db '0123456789ABCDEF'
t1 db 1,3,5,7,-9,11,-13,15
count equ $-t1
data ends
stack segment
db 512 dup(?)
stack ends
code segment
assume cs:code,ds:data
.
start:
mov ax,data mov ds,ax
mov ax,stack mov ss,ax
mov sp,512
mov dx,offset info
mov ah,9
int 21h
mov cx,count
mov bx,0
x:
mov al,t1[bx]
inc bx
and al,10000000b
loopz x
dec bx
mov ax,bx
mov cx,4
y:
push cx
mov cl,4
rol ax,cl
mov si,ax