循环结构程序设计方案汇编语言.docx
- 文档编号:4677068
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:10
- 大小:99.33KB
循环结构程序设计方案汇编语言.docx
《循环结构程序设计方案汇编语言.docx》由会员分享,可在线阅读,更多相关《循环结构程序设计方案汇编语言.docx(10页珍藏版)》请在冰豆网上搜索。
循环结构程序设计方案汇编语言
汇编语言实验报告
实验名称:
循环结构程序设计
姓名:
学号:
班级:
一、实验内容
1.用多种循环方法实现1+2+3+…+20的程序(至少二种方法);
2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符
3、编写一个汇编语言程序,要求将BX寄存器内的小写字母用大写字母显示出来。
4、ADDR单元是存放数据的内存单元,要求将该内存单元中的字依次用十六进制数显示出来。
二、实验目的
1.掌握循环程序的结构。
2.掌握循环程序的设计、编写及调试方法。
3.掌握循环程序设计的基本方法。
主要掌握几种基本的循环程序设计技巧,如计数法程序设计、当循环、直到循环等程序设计技术。
3、实验结果
1、将内存中的数据块中(BUFF为起始地址)奇数和偶数分别存入以ADDR1和ADDR2开始的存储块中,并分别统计其中的奇、偶数,将统计结果存放在RESULT开始的两个字存储单元中。
实验代码:
(1.ASM1.OBJ1.EXE)
datasegment
buffdw6,35,99,17,80,69,50,33
addr1dw8dup(?
)
addr2dw8dup(?
)
resultdw0,0
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movcx,8d
movsi,0
movdi,0
movbx,0
movdx,0
L1:
testbuff[si],0001h
jeL2
movax,buff[si]
movaddr2[bx],ax
addsi,2
addbx,2
incdl
deccx
jmpL1
L2:
movax,buff[si]
movaddr1[di],ax
adddi,2
addsi,2
incdh
deccx
jmpL1
movsi,0
movbyteptrresult[si],dh
addsi,2
movbyteptrresult[si],dl
codeends
endstart
运行结果如下:
2、不利用乘法指令实现乘法的程序
代码如下:
(2.ASM2.OBJ2.EXE)
datasegment
xdw30d
ydw10d
dataends
codesegment
assumecs:
code,ds:
data
start:
pushds
subax,ax
pushax
movax,data
movds,ax
movcx,x
movbx,y
movax,0
L1:
addax,bx
loopL1
movdx,ax
movah,2
int21h
codeends
endstart
运行结果如下:
3、用多种循环方法实现1+2+3+…+20的程序(至少二种方法)
代码1:
(31.ASM31.OBJ31.EXE)
DATASEGMENT
XDW0D
YDW20D
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVBX,X
MOVCX,Y
MOVAX,0
L1:
INCBX
ADDAX,BX
LOOPL1
MOVDX,AX
MOVAH,2
INT21H
CODEENDS
ENDSTART
运行结果1如下:
(结果存于DX寄存器中)
实验代码2如下:
(32.ASM32.OBJ32.EXE)
DATASEGMENT
YDW20D
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVCX,Y
MOVAX,0
MOVBX,0
L1:
INCBX
ADDAX,BX
CMPBX,20
JNZL1
MOVDX,AX
MOVAH,2
INT21H
CODEENDS
ENDSTART
运行结果2如下:
(实验结果存于DX寄存器中)
4、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符
实验代码如下:
(4.ASM4.OBJ4.EXE)
codesegment
assumecs:
code
start:
movah,1
int21h
cmpal,0dh
jeexit
cmpal,'0'
jbstart
cmpal,'9'
jbeoutput1
cmpal,'A'
jbstart
cmpal,'Z'
jbeoutput
cmpal,'a'
jbstart
cmpal,'z'
jbeoutput
output1:
movdl,al
movah,2
int21h
jmpstart
output:
movah,02h
movdl,'c'
int21h
jmpstart
exit:
movah,4ch
int21h
codeends
endstart
运行结果如下:
5、编写一个汇编语言程序,要求将BX寄存器内的小写字母用大写字母显示出来。
实验代码如下:
(5.ASM5.OBJ5.EXE)BX寄存器中的测试数据位3132H
CODESEGMENT
ASSUMECS:
CODE
START:
MOVBX,6162H
SUBBX,2020H
MOVDL,BL
MOVAH,02
INT21H
MOVBL,BH
MOVDL,BL
MOVAL,02
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
运行结果如下图:
6、ADDR单元是存放数据的内存单元,要求将该内存单元中的字依次用十六进制数显示出来。
实验代码如下:
(6.ASM6.OBJ6.EXE)测试数据为1EH,3DH,34H,98H
DATASEGMENT
ADDRDB1EH,3DH,34H,98H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,0
MOVDI,OFFSETADDR
STEP:
MOVAL,[DI]
ADDDI,1
MOVBL,AL
MOVDL,AL
MOVCL,4
SHRDL,CL
CMPDL,9
JBENEXT1
ADDDL,7
NEXT1:
ADDDL,30H
MOVAH,2
INT21H;显示高位ASCII码
MOVDL,BL
ANDDL,0FH
CMPDL,9
JBENEXT2
ADDDL,7
NEXT2:
ADDDL,30H
MOVAH,2
INT21H;显示低位ASCII码
INCSI
CMPSI,4
JNZSTEP
MOVAH,4CH;返回DOS
INT21H
CODEENDS
ENDSTART
运行结果如下:
四、实验心得体会
本次实验主要是循环结构的程序。
通过本次实验,学习汇编语言中循环结构类型的程序的编辑、编译与连接,更好的掌握分支程序的结构。
通过本次实验,我对循环结构有了一定的理解,尤其是LOOP循环指令,对于cmp指令和JZN、JZ等指令也有了一定的了解
实验过程是一个不断探索和实践,发现错误和改正错误的一个过程。
而在实验四这个试验中,首先,要解决的问题是熟悉和了解汇编语言中分支结构的内容。
在完成实验内容的过程中,由于还是处于摸索过程中,所以刚开始的进度很慢,是对着实验过程,一步一步的执行,还要不时的进行截图。
但,熟能生巧,到后来的实验就进行的比较快。
通过本次实验,掌握了汇编语言中循环结构这一部分的内容,通过上级实验,更好的理解我们在课本上看到的循环结构的内容,让我们在实验中更深一步的理解和应用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 结构 程序设计 方案 汇编语言
![提示](https://static.bdocx.com/images/bang_tan.gif)