- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
天大计算机科学与技术学院—汇编语言—上机实验报告202.doc
《汇编语言》实验报告 学号: 姓名:
实验题目
编写一程序使其实现将1个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把两个数组显示出来. 实验要求
需要定义3个数组,一个是含有20个数据的数组M,另两个是正数数组P和负数数组N.P数组里放着M中的正数,N放着M里的负数,并且分别将P和N显示出来. 程序设计说明(用来说明程序的功能、结构。包括:程序名、功能、原理及算法说明、程序及数据结构、主要符号名的说明、程序框图等。)
程序的功能是将含有20个数据的数组分成2个数组,一个为正数数组,一个为负数数组,并将2个数组分别显示出来.首先在定义数据段时定义数据数组,将20个数据分别定义出来,并定义2个数组P和N.在代码段里,利用段寄存器si对数组M的数据进行访问,并用比较语句cmp判断数据的正负,然后用传送语句mov存放到P和N数组中,最后用一个屏幕显示的DOS指令,将数组中的数据显示出来. 程序调试说明(包括:调试情况,如上机时遇到的问题及解决办法,观察到的寄存器、存储器的内容或状态及其分析.对程序设计技巧的总结及分析等;程序的输出结果及对结果的分析;实验的心得体会,以及诸如调试日期、文件存放位置等需要记录的信息。)
首先,在数据段的装入时,ds=13CE,从ds:0000-ds:0027存放着M的数组的数据ds:0028-ds:004f和ds:0050-ds:0077分别存放p和n.在执行cmp对数据的判断和mov对数据的传送之后,P和N分别存放M数组的整数和负数.然后将数据按16进制输出.符合预期的输出,调试成功.
实验结果与结论(经调试正确的程序的运行结果)
五、使用说明(包括:程序的使用方法,调用方式,操作步骤等;要求输入信息的类型及格式;出错信息的含义及程序的适用范围等。)
本程序是对数据按照正负进行分类,并输出.在使用时,只要在数据定义时进行数据的修改,就可以对不同的数据进行分类. 实验中遇到的问题及解决方法
开始时,我本来想在数据判断正负之后的数据传送,进行P和N的无间隙存储,即PN数组之间的数据没有间隔.但我发现这样程序会变得复杂.后来改为,3个数组M,P,N定义同样空间的数组,并且PN定义全为0数据.数据在M里按同样位置存储到PN里面.如此,有一个问题需要解决.数据在显示时,不应该在0的数据输出.因此,本程序不允许对0进行分类. 程序源代码
data segment
m dw 23,-35,243,5634,-1572
dw 1652,-2034,56,-27,-3521
dw 496,128,-209,-114,-7843
dw 17,505,-34,-378,96
p dw 20 dup (0)
n dw 20 dup (0)
x db 0
data ends
stack segment para stack
dw 20h dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax
mov si,0
mov cx,20
again:
test m[si],8000h
jns posint
mov ax,m[si]
mov n[si],ax
jmp next
posint:
mov ax,m[si]
mov p[si],ax
next:
add si,2
loop again
mov si,39
mov bx,1
again1:
cmp p[si-1],0
je exit
mov dl,byte ptr p[si]
here:
and dl,0fh
cmp dl,9
ja next1
add dl,30h
jmp next2
next1:
add dl,37h
next2:
mov x,dl
mov dl,byte ptr p[si]
mov cl,4
shr dl,cl
cmp dl,9
ja next3
add dl,30h
jmp next4
next3:
add dl,37h
next4:
mov ah,2
文档评论(0)