东华大学罗辛汇编实验五.docx
- 文档编号:25775219
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:11
- 大小:98.69KB
东华大学罗辛汇编实验五.docx
《东华大学罗辛汇编实验五.docx》由会员分享,可在线阅读,更多相关《东华大学罗辛汇编实验五.docx(11页珍藏版)》请在冰豆网上搜索。
东华大学罗辛汇编实验五
操作系统原理实验报告
实验名称:
循环结构程序设计
姓名:
学号:
班级:
计算机
指导老师:
罗辛
一、实验内容
(描述实验内容)
1、 汇编语言提供了“LOOP”指令实现循环,在debug中可以看出运行机制如下:
请仔细分析示例中的运行机理,并根据上面的方法在debug中完成:
①以你姓名中“名的首字母”为基准,使用存储单元连续输出16个字母(提示:
使用ASCII码);
②显示寄存器与存储单元中的结果。
要求:
① debug的屏幕截图,并分析各语句的功能;
② 指出寄存器、各存储单元的结果。
2、 用多种循环方法实现1+2+3+…+20的程序(至少二种方法);
3、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符
4、 编写一个汇编语言程序,要求将BX寄存器内的小写字母用大写字母显示出来。
5、 ADDR单元是存放数据的内存单元,要求将该内存单元中的字依次用十六进制数显示出来。
二、实验目的
(描述实验目的)
1、掌握循环程序的结构。
2、掌握循环程序的设计、编写及调试方法。
3、掌握循环程序设计的基本方法。
主要掌握几种基本的循环程序设计技巧,如计数法程序设计、当循环、直到循环等程序设计技术。
三、实验原理
(描述实验基本原理)
利用编写汇编程序
利用MASM编译汇编程序
利用LINK连接汇编程序
利用DEBUG调试汇编程序
四、实验过程
(重点部分,必须包括:
实验开发环境、实验步骤、实验源程序代码及其结构分析)
实验环境:
windowsXP
验证实验一:
datasegment
buff dw6,35,99,17,80,69,50,33
addr1 dw8dup(?
);定义内存
addr2 dw8dup(?
)
resultdw0,0
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movcx,8d
movsi,0 ;清空si
movdi,0 ;清空di
movbx,0
movdx,0
L1:
testbuff[si],0001h ;判断奇偶
jeL2 ;若相等,则跳到L2
movax,buff[si];将偶数存入ax
movaddr2[bx],ax;存入addr
addsi,2
addbx,2
incdl
deccx
jmpL1
L2:
movax,buff[si]
movaddr1[di],ax;将奇数存入addr1
adddi,2
addsi,2
incdh
deccx
jmpL1
movsi,0
movbyteptrresult[si],dh
addsi,2
movbyteptrresult[si],dl
codeends
endstart
验证实验2:
datasegment
xdw30d
ydw10d;定义内存
dataends
codesegment
assumecs:
code,ds:
data
start:
pushds
subax,ax
pushax;ax、ds进栈
movax,data
movds,ax
movcx,x
movbx,y
movax,0
L1:
addax,bx
loopL1
movdx,ax
movah,2
int21h
codeends
endstart
程序一:
从B开始连续输出16个英文字母
B对应的ASC||码为42,bx中存入的是内存地址,每存一个地址+1
程序二:
两个程序均用到了循环结构,利用g指令可以运行指定行的程序代码,同时显示运行后寄存器情况。
程序一为直接循环20次
程序二维奇数部分偶数部分分别求和后再求总和
程序三:
codesegment
assumecs:
code
start:
movah,1h
int21h
cmpal,0dh;如果是回车则结束
jzdone
cmpal,30h;如果在0之下则输入下一个
jbnext
cmpal,39h;在9之上则继续判断是否为字母
jacharup
movdl,al
movah,2h
int21h;输出数字
jmpstart
charup:
cmpal,41h
jbnext;在A之下,输入下一个
cmpal,5ah
jachardown
outc:
movdl,63h
movah,2h
int21h;输出字母c
jmpstart
chardown:
cmpal,61h
jbnext
cmpal,7ah
janext;在a~z中,输出字母c
jmpoutc
next:
jmpstart
done:
movax,4c00h
int21h
codeends
endstart
利用多次跳转形成循环
程序四:
codesegment
assumecs:
code
start:
movbh,69h
movbl,70h;初始化dx内数据
movdl,bh
subdl,20h;大写转化为小写
movah,2
int21h
movdl,bl
subdl,20h;大写转化为小写
movah,2
int21h
codeends
endstart
程序五:
datasegment
ADDRdb35h,2eh,28h初始化内存
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movcx,3;循环次数
movbx,offsetADDR
lop:
movbp,cx
moval,byteptr[bx]
movdh,al
movdl,al;准备将两位分开分别显示
movcl,4
shrdl,cl逻辑右移四位
cmpdl,9h
jbenext1
adddl,7h;比9小则直接跳转,否则+7后跳转
next1:
adddl,30h
movah,2
int21h
movdl,dh
anddl,0fh屏蔽高位,留下低位
cmpdl,9h
jbenext2
adddl,7h
next2:
adddl,30h
movah,2
int21h
movcx,bp
incbx
movdl,0ah;输出换行符
movah,2
int21h
looplop;循环,继续操作下一个数据
movax,4c00h
int21h
codeends
endstart
五、实验结果
(把程序运行的结果通过截屏帖出来,并简单描述每个截图的意思)
部分运行结果显示在实验过程部分
程序四:
BX中数据为ip,则输出大写字母IP
程序五:
全部运行后,输出ADDR内存中三个16进制数据。
六、实验心得体会
(写出在做实验过程中碰到的问题、解决方法、存在的不足,实验过程中所获得的经验等等)
对跳转指令以及循环结构有了更清晰的了解认识。
七、参考文献
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东华 大学 汇编 实验