- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
郭朋亮硬件实验报告
汇编语言程序设计
班级:
学号:
姓名:
循环程序设计
一、实验目的:
1.熟练掌握2.掌握1.编写一个程序实现:在BUF开始的存储区中存放30个带符号数,试统计其正数、负数和零的个数,并将统计的个数分别放到PLUS、NEGATIVE、ZERO单中。
三、实验流程图:
=0
!=0
正
负
否
是
四、实验程序清单:
DATAS SEGMENT
BUF DB 30 DUP(0,-4,5)
PLUS DB ?
NEGATIVE DB ?
ZERO DB ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV BL,00H;初始化计数器
MOV CL,00H
MOV DL,00H
MOV CH,1EH;因为有三十个数,作为循环结束条件
LEA SI,BUF;把buf的偏移地址传给si寄存器
TAB:MOV AL,[SI]
OR AL,00H
JNZ TBB
INC BL
JMP EXIT
TBB:TEST AL,80H;测试数字为正数还是负数。
JS TCB
INC CL
JMP EXIT
TCB:INC DL
JMP EXIT
EXIT:
INC SI
DEC CH
JNZ TAB ;数字为零时,BL计数器加一,循环没结束,则跳回TAB,否则跳出。
MOV ZERO,BL
MOV PLUS,CL
MOV NEGATIVE,DL
MOV AH,4CH
INT 21H
CODES ENDS
END START
五、实验DEBUG运行图:
六、实验问题与解决:
问题有四个。
一、数据段定义中,给三十个数据分配存储空间的地方,汇编时出现错误,missing operator in expression;
二、TAB处,OR命令的源操作数FFH出现错误;
三、第四十行negative拼写错误,导致后面与数据段定义不一致。
四、一个隐含问题,影响结果。在判断一个数是否为零时,给跳转语句jnz的条件是or al,0ffh,出现错误。
问题解决:
第一个问题已解决,开始时用的开辟空间的语句是 buf db 10dup(00h),10dup(81h),dup(01h)。经debug调试后改为buf 30 dup(0,-1,1)。
第二个问题已解决,在FFH前加0即可,即改为0FFH。
第三个问题已解决,改正为正确的拼写。
第四个问题已解决,将or al,0ffh改为or al,00h。
七、实验心得体会:
(一)通过实验,我在一定程度上体会到了作为一个程序人员应该具备清楚的编程思路,和极大的耐心。这样的一个小的程序尚且如此,大的程序就可想而知。
首先,要画好流程图。
其次,根据流程图中的每一个模块编辑相应的语句。
最后,再将语句整合成一个整体,形成程序。
这三大部中,第一部我在纸上完成。先简单得勾勒出草图,明确每一分支中控制部分和实现部分的内容;第二部,大部分也在纸上先写好;第三部,主要通过上机调试。第二部写的详细具体正确与否,关系着第三部的工作量。
(二)先要形成自己的思路。编程和调试要顺应自己的思路和习惯。当自己的能力实在无法解决问题时,要及时寻求帮助。上网搜资料或找同学帮忙。两个程序的编写,我都要感谢同学的帮助。
分支程序设计
一、实验目的:
1.熟练掌握2.掌握1. 设数据区中NUM1,NUM2字节单元中存放的是两个无符号数,试编写一 个程序完成下述操作:
(1)如果两个数均为偶数,则两个数分别加1后送入DA1、DA2字节单元中;
(2)如果一个为偶数,一个为奇数,则奇数送入DA1,偶数送入DA2字节单元中;
(3)如果两个数均为奇数,则两个数分别送入DA1、DA2字节单元中;
三、实验流程图:
奇
偶
奇
偶
四、源程序清单:
DATA SEGMENT
X1 DW 1
X2 DW 2
DA1 DW ?
文档评论(0)