- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
80X86汇编语言程序设计课内实验报告
班级
实验时间
姓名
学号
实验内容概述
实验一:在书上的例题或者习题所给的程序范例中任选2到3道,练习编译调试,包括:masm, link, debug 的过程;
(1)将正数N插入一个已整序的字数组的正确位置,该数组的首地址和末地址分别为arry_heard,arry_end,其中所有数均为正数且按递增的次序排列。
(2)在addr单元中存放着数Y的地址,试编写程序把Y中1的个数存在count单元中
实验二:循环程序设计
数据段中已定义了一个有n个字数据的数组M,试编写一程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。
实验三:分支程序设计
设计一程序,接受从键盘输入的数字(1~5),并对每个数字的输入次数进行计数,计数结果存放在count为首地址的数组中。
实验步骤
实验一:
(1)用找到应插入数的位置作为循环结构的结束条件,把要插入数的位置前的元素均前移一个字。从数组的尾部向头部查找,可逐字取出数组中一个数K与N比较,若K>N,则把K前移一个字,然后继续往后查找。若K≤N,则把N插在K之前结束程序。在arry_head-2单元中存放‘-1’,这样可以保证如果数N小于数组中所有数,那它必然大于-1,这样可以正确地把N放在数组之首,循环结束依然可以用K大于N。
(2)根据最高有效位是否为1来计数,然后用移位的方法把各位数逐次移到最高位,以测试数是否为0作为循环结束条件。
实验二 :
利用逻辑右移把M中的数依次放到要比较的地址中,源变址从0开始,将M数组中的元素与0相比,大于0则跳转,小于0则求补使其变为绝对值,再比较大小,记下绝对值最大的数存入M+2n单元,偏移地址存入M+2(n+1)单元。
实验三.
将输入的数字依次与12345比较,相等则实现相对应的跳转,每跳转一次相应的计数器加1,依次计算每个数字出现的次数并放入相应的位置,转化为ASCⅡ码输出。
实验中遇到的问题及其解决方法
1、实验一(1)忽视边界问题
考虑N与数组中所有数的大小关系。当它大于所有数,循环次数可能为0,当它小于所有数,不允许查找范围超过数组首地址。利用所有数均为正数的条件,在array_head-2单元中存放‘-1’,保证若N小于所有数那它必大于-1,正确地把N放在数组之首。
2、实验二调用NEG指令。用补码表示负数解决了负数输出为正数的问题。
3、实验三在数组中包含负数时输出错误,单步调试后发现是输出语句有误,改正后正确输出了绝对值最大的数。
实验结果
见附录
建议
Dosbox 工作环境与系统不兼容,无法使用,建议使用emd8086,更加简便易上手
附录
一.(1)
datarea segment
x dw ?
arry_head dw 3,5,15,23,37,49,52,65,78,99
arry_end dw 105
n dw 32
datarea ends
prognam segment
main proc far
assume cs:prognam,ds,datarea
start:
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov ax,n
mov arry_head-2,0ffffh
mov si,0
compare:
cmp arry_end[si],ax
jle insert
mov bx,arry_end[si]
mov arry_end[si+2],bx
sub si,2
jmp short compare
insert: mov arry_end[si+2],ax
ret
main endp
prognam ends
end start
(2)
data segment
addr dw number
number dw Y
count dw ?
Y dw 1,2,3,5,1,0,9
data ends
prognam segment
main proc far
assume:cs:prognam,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov cx,0
mov bx,addr
mov ax,[bx]
repeat:
test ax,0ffffh
jz exit
您可能关注的文档
- 福师《财务会计(上)》在线作业一研讨.doc
- 建筑给排水大作业研讨.doc
- 福州可门火电厂调试异常研讨.doc
- :回旋加速器解答.ppt
- 地理卷·2016届北京市朝阳区高三第一学期期末统一考试(2016.01)研讨.doc
- 地理模板及思路研讨.doc
- 建筑工程BIM模型创建与交付标准研讨.doc
- 地理学名词解释研讨.doc
- 地埋管施工组织研讨.doc
- 福州中小外贸企业的跨境电商业务,改后研讨.doc
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
文档评论(0)