ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:28.19KB ,
资源ID:12961559      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12961559.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机原理与汇编语言实验报告123.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机原理与汇编语言实验报告123.docx

1、计算机原理与汇编语言实验报告123实验1:循环接收用户按键输入,将用户输入的大字母原样输出,将用户输入的小写字母转换为小写字母再输出,用户若输入数字 0则退出程序,其它情况输出实验程序代码data segme ntstr db error!$data endsstack segme nt para stack stackdb 100 dupstack endscode segme ntassume ds:data,cs:code,ss:stackstart:mov ax,datamov ds,axaga in:mov ah,01hint 21hcmp al,0je nextcmp al,Ajb

2、 error ;小于A的出错cmp al,Zjbe print1 ;在 A, Z 之间的输出 print1cmp al,ajb error ;在Z(41hH)和a(61H)之间的出错cmp al,zjbe print2 ;在 a,z 之间的输出 print2jmp errorprin t1: mov dl,almov ah,02hint 21hjmp again ;循环输入,againprin t2:mov dl,alsub dl,20hmov ah,02hint 21hjmp again ;循环输入,againerror :mov dx,offset str mov ah,09h int 2

3、1h n ext:mov ah,4ch int 21hcode endsend start实验截图=jua-smySblg-. exe RkKHHl IsGBei-roi*:5比 x# GyVUUQ=5陶E.实验总结这个实验比较简单,花费的时间也少,将我们学习的理论知识用于实践 第一次真实的体会到汇编语言的特点,以及和 C+语言的区别。实验2:从键盘接收用户输入的一个正整数(0-32767 之间),输出该数字的所有因子data segme ntstr db input data 0-32767:$num dw 0stri ng db 5 dup(0)data endsstack segme n

4、t para stack stackdb 1000 dup(?)stack endscode segme ntassume ds:data,cs:codestart:mov ax,datamov ds,axmov dx,offset strmov ah,09hint 21h ;显示标题mov si,0mov di,0rein:mov ah,01hint 21hcmp al,20hjz inte ;输入空格表示输入结束cmp al,30hjb exit ;不在0-9之间的退出cmp al,39hja exitsub al,30h ;不在0-9之间的退出mov stri ngsi,alinc si

5、cmp si,6jz exit ;输入位数超过5位的退出jmp rein;* 以下整和整dec si ;到达这一步时,si比输入的位数大1,所以要减1in te:mov bx,nummov ax,10mul bxadd al,stri ngdiadc ah,00hmov nu m,axinc dicmp di,sijb inte ;得出的整数放置于变量 num中.*以下求因子,输出mov bx,0aga in:mov ax,num mov dx,0 inc bxcmp bx, numja exitdiv bxcmp dx,0je tcalljmp aga intcall:call tpri n

6、tjmp aga intprint proc near ;print 子程序打印输出 bxmov cx,10mov si,4mov ax,bxboa1:cmp ax,10jb boa2xor dx,dxdiv cxor dl,30hmov stri ngsi,dldec sijmp boalboa2:or al,30hmov stri ngsi,alg:mov dl,stringsi 打出输出 ASCIImov ah,2int 21hinc sicmp si,5jne gmov dl,20hmov ah,2int 21h ;空格隔开每个因子rettpri nt endpexit: mov ah

7、,4chint 21hcode endsend start实验截图C: MJsers?cd e : masnc : na&nniasfi iinzl.asnkMiciTQSpFt Macro AsenbLr Ucrsion 5-00Copyrilit HicrosoFt Corp 1981-1985, 1917. All rights reserved.Object filename Csiinzi.OBJ:Soiivr* 1 ist ing CNIJT. 1 TCross-Feference CNUL.CRF:50386 + 吗J.53?0 B/tes snbol space freeQ U

8、arning Errors0 Severe Errorsc - na.c m 1 i(h k i/inz i a bjHicro?nft Overlap Linker Uersion 3.60Copyriflit Nicrosoft Corp 1383-1987 H11 rights reserved.Run File VIHZI.EXEJ:List File NUL.KAP1:LibFat*ies L.LIBI:c-nasm91nz i.exeinput data 0-32767:12 1 2 3 4 6 12c : masinyinzi exeinput data 0 327G7=C?S?

9、 1 3 31 ? 93 219 2263 G789c:Snasmyinaiinput dAtA 0-32767:12345 1 3 5 15 823 2469 4115 12345c - masmyinsi.exeinput dAtA 0-32767:B 1248匸:11|孔11注释1:以上为编译连接运行的结果,其中,输入的, 12,120,1310,6789,12345,8等均能给出因子。注释2:下图为,特殊的输入情况下,程序退出 一,输入的字符不是09之间的字符,退出 二,输入的位数超过范围(032767),退出d : Smasmi/in21 .exeinput data 0-3276?

10、: 1 2 4 HD:Xnasmin2 i.exeinput data 0-3276?:rD : nasnlyinz . exe input data 0-32767:c ; 5dMiuy;Ln乂 1.input data 0-32767:222222c:nasm输入字符 r -等退出程序输入的整数222222超过范围,自动退出程序实验总结本次实验花费了较长时间,其中在修改调试程序上花费时间占绝大部分。在实验代码的一步步完善过程中,经历了一下步骤:1, 程序编译出错这里的问题出现在语法错误上,不过这些错误很少,容易修改;不过有一个 错误是提示:no end of file,造成的原因是由于我定

11、义调用宏,编译时出现的 一个不会修改的错误。之后我去掉宏,然后把宏内的代码直接复制到相应的 位置,之后再次编译,没有错误。2, 编译连接都没有错误,但在运行时出错修改运行,出现无限循环输出乱码情况,再次,修改后,出现一个更严重的 情况,只要我一运行 yinzi.exe程序,电脑就发出 do的报警声,再次修改, .,再后面,程序可以运行,并且可以输出一些正常的结果3, 在根据输入的ASCII字符转换成整数时,如下代码in te:dec simov bx, nummov ax,10 此行代码错误mul bxadd al,stri ngdiadc ah,OOhmov nu m,axinc dicmp

12、 di,sijb inte程序运行结果是:一,能正确求出两位数的因子,如 12,为1,2,3,4,6,12等二,输入三位数120,结果是12的因子1,2,3,4,6,12输入四位数1230,结果是12的因子1,2,3,4,6,12输入五位数12100,结果是121的因子1,11,121只需将上面inte:这个移到下一行即可解决问题;虽然,实验花了很长时间修改,克服种种错误终于能够输出正确结果, 但我觉得 不但的找出错误并修正错误这个过程更能锻炼人, 学到的东西更多。不过,我们 在写程序时,一定要细心谨慎,因为如果写的时候不仔细,回头再次调试修改的 话就得花更多的时间,不值得,这是我的一点心得体

13、会。实验3:从键盘接收用户输入的一个正整数(0-32767 之间),输出该数字的所有因 子。1、 函数in put:接收用户一个正整数,将数据保存到 AX2、 函数outpot:将AX中的数据在屏幕上显示出来3、 函数sort:将BX所指向的一批数据进行排序,数据个数在AX中从键盘接收 用户一批数据输入,对该批数据从小到大排序,将原数据和排序后的数据在屏幕 上显示出来。实验程序代码datal segme ntn dw 0000hdata dw 100 dupnum dw 0buffer db 5 dup ;输入ASCII转换成整数的缓冲区stri ng0 db how many datas:

14、$stri ng1 db in put data: $string2 db order: $data1 endsstack segme nt para stack stackdb 100 dupstack endscode segme ntassume ds:data1,cs:code start:mov ax,data1mov ds,axmov dx,offset stri ngOdata中mov ah,9 int 21h call in put mov n,axmov dl,0ah mov ah,2 int 21hmov cx,n mov di,0 data in: call in put

15、mov datadi,axadd di,2 loop data inmov dl,0ah mov ah,2 int 21hmov dx,offset stri ng1 mov ah,9int 21h mov si,0 mov cx,n aga in 1:mov ax,datasicall output add si,2 loop aga in1 mov dl,0ah mov ah,2 int 21hmov dx,offset stri ng2 mov ah,9int 21hmov cx,n call sortmov si,0 mov cx,n aga in 2:mov ax,datasical

16、l output add si,2 loop aga in2 jmp n ext;提示输入多少数据;数据个数存入到变量n中;换行;循环输入几个数据打印出,并存入到;换行;提示输出排序前的;换行;提示输出排序后的;对data排序in put proc near ;* 接收输入的整数存入 AX 中,参数 buffer, nu m*push dipush bxmov si,0mov di,0rein:mov ah,01hint 21hcmp al,20hje inte ;空格表示输入结束sub al,30hmov buffersi,alinc sicmp si,5jb reindec siin te

17、:mov bx,nummov ax,10mul bxadd al,bufferdiadc ah,00h mov nu m,axmov bufferdi,00h ;清零inc di cmp di,sijb intemov ax,num ;将整理好的整数放到 AX中mov num,0000h用完 num 清 0pop bx pop diretinput endp ;* 用到的寄存器 ax,si,di,bx*output proc near ;*打印出AX中的数据,传入参数 AX即可*push cxpush sipush dxmov cx,10mov si,4 boa1:cmp ax,10 jb b

18、oa2 xor dx,dx div cxor dl,30hmov buffersi,dl dec sijmp boal boa2:or al,30hmov buffersi,al g:mov dl,buffersi mov ah,2 int 21hmov buffersi,0 inc sicmp si,4jbe gmov dl,20hmov ah,2int 21h pop dx pop si;打出输出ASCII;打印完后清零,避免重叠;空格隔开pop CXoutput endp ;*sort proc near ;*用到的寄存器 ax,cx,si,dx*字序列的冒泡排序子程序,参数 data,

19、cx(元素个数)ret*;比较遍数;比较次数dec cx loop1:mov di, cxmov bx, 0 loop2:mov ax, databx cmp ax, databx+2 jbe con ti nuexchg ax, databx+2 mov databx, ax;相邻两数;比较;交换位置con ti nue:add bx, 2loop loop2mov cx, diloop loop1 retsort endp ;*用到的寄存器 ax,bx,di *n ext:mov ah,4ch int 21hcode endsend start实验截图c: : n m aslih hans

20、 flu. asmiMicrosoFt Flacra Assemblek* Uersion 5 .Q0Capypisiht Microsoft Coi*p 19811985, 1987. All rights reserved.Object fllnnme Chanshu.OBJ=Source LiViraj CNUL-LST=Gtos&-rcfercnGe CHUL.CRF:50300 1- 41S4?& Bytes symbol space freeH Uarnin? Errors8 Severe Errorsc: niisiiiilink hanshu-ahjMiei*&c:oFt CR

21、 Oueilay Linker Uesion 3_60Copyright CO MicposoFt Capp 1999-1987- All viffhts i*cseFU4_Run File EHAHSHU-EKE1:List File EHUL.MAPJ:Libpapi&E L_LIBl:u * 5谎s:rih锻n醫hvhAnshu -ho if n&hif datas - 1&1 t 22 6.7 432 12 989 401 3242 12 G 8 34 12 8Input dta: 1 6 23 67 432 12 769 431 3342 12 G 8 34 2 8。匕站严 1 fr

22、 6 S 8 12 12 12 23 34 67 401 432 785 3342g;实验总结这个实验跟第二个实验有比较大的关系;这个程序的成功运行也是在不断积累 错误中产生的;由于我盲目的复制第二个实验里自己写的代码到第三个实验中, 导致一系列错误,步步为营查找很就才查找到几个严重的错误:1,错误运行结果截图l : hanshu. exe5 111 511 112 6484 1U ?5D1 115 4039 1*13 464 *5I? f1 亍-: :KttlHILIMKVBHkhBrUtkKW分析:in put中,要由n um=0开始,所以将 num存入ax后要把num置零|c: nias

23、 m han s hu - e xe5 0 1155 4 4 3;)0 0 0 0不排序输出,也是这样,如错误原因:一,存入datasi时,si是以inc si递增的;二,读取datasi时,也是以1递增的由于data定义是dw,每个数据占两个字节,故导致以上错误;修改两处,用 loop循环修改后:c : 5孔whu.411224433 *1234c - masmyhan sItu._ exe6 22 22 44 44 11 11 55 55 66 66 33 33 *li 22 33 44 55 66进一步完善即记得上图中的正确结果:c: riAsnkhAnshu -hoi/ nhif datas: 1&1 t 23 6.7 432 12 789 401 3242 12 6 8 24 12 8Input detta: 1 & 23 67 422 12 789 491 3342 12 G 8 34 12 8 ot-der: 1 fr 6 S 8 12 12 12 23 34 67 401 432 785 3342g;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1