




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验 1:循环接收用户按键输入,将用户输入的大字母原样输出,将用户输入的小写字母转换为小写字母再输出,用户若输入数字0 则退出程序,其它情况输出实验程序代码data segme ntstr db error!$data endsstack segme nt para stack stackdb 100 dup stack endscode segme ntassume ds:data,cs:code,ss:stackstart:mov ax,datamov ds,axaga in:mov ah,01hint 21hcmp al,0je nextcmp al,Ajb error;小于A 的出错c
2、mp 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 21h n ext:mov ah,4ch int
3、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 nt para stack stac
4、kdb 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 sicmp si,6jz exit;输
5、入位数超过 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 ntjmp aga intp
6、rint 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,4chint 21hcode en
7、dsend 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 Uarning Errors0
8、Severe Errorsc - na.c m 1 i ( h k i/inz i ?a bjHicro?nft Overlap Linker Uersion 3.60Copyri flit 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? 1 3 31 ?
9、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 ),退出: 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
12、dicmp 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 dup num dw 0buffer db 5 dup ; 输入 ASCII 转换成整数的缓
14、冲区 stri ng0 db how many datas: $stri ng1 db in put data: $string2 db order: $data1 endsstack segme nt para stack stackdb 100 dup stack endscode segme ntassume ds:data1,cs:code start:mov ax,data1mov ds,axmov dx,offset stri ngO;提示输入多少数据mov ah,9 int 21h callin put mov n,axmov dl,0ah mov ah,2int 21hmov
15、cx,n mov di,0 data in: call in putmov datadi,axadd di,2 loop data inmov dl,0ah mov ah,2int 21hmov dx,offset string1 mov ah,9int 21h mov si,0 mov cx,n aga in 1:mov ax,datasicall output add si,2loop aga in1 movdl,0ah mov ah,2 int21hmov dx,offset string2 mov ah,9int 21hmov cx,n call sortmovsi,0movcx,na
16、ga in 2:mov ax,datasi call output add si,2 loop aga in2 jmp n ext;数据个数存入到变量n 中;换行;循环输入几个数据打印出,并存入到data 中;换行;提示输出排序前的;换行;提示输出排序后的;对 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
17、si,5jb reindec siin te: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
18、,4 boa1:cmp ax,10 jb boa2 xor dx,dx div cxor dl,30hmov buffersi,dl dec sijmp boal boa2:oral,30hmov buffersi,alg:mov dl,buffersi;打出输出 ASCIImov ah,2 int 21hmov buffersi,0inc si;打印完后清零,避免重cmp si,4叠jbe gmov dl,20hmov ah,2int 21h pop dxpop sipop CXret用到的寄存器 ax,cx,si,dx*output endp;*sort proc near ;*字序列的冒
19、泡排序子程序,参数data,cx (元素个*dec cx loop1:movdi, cxmov bx, 0 loop2:mov ax, databxcmp ax, databx+2jbe con ti nuexchg ax, databx+2mov databx, axcon ti nue:add bx, 2loop loop2mov cx, diloop loop1retsort endp ;*n ext:mov ah,4ch int 21h code endsend start;比较遍数;比较次数;相邻两数;比较;交换位置用到的寄存器ax ,bx,di *实验截图c: :n m ASLIH
20、 hans flu. asmiMicrosoFtFlacra Assemble K * Uersion 5 .Q0Capypisiht Microsoft Coi*p 1981 1985, 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
21、 :oFt CR Oueilay Linker Uesion 3_60Copyright CO MicposoFt Capp 1999-1987- All viffhts i*cseFU?4_Run File EHAHSHU-EKE1:List File EHUL.MAPJ:Lib PAPi&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 6 S 8 12 12 12 23 34 67 401 432 785 3342G;实验总结这个实验跟第二个实验有比较大的关系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车棚制作合同范本
- 4-Biphenylthio-carboxamide-生命科学试剂-MCE
- 销售模具合同范本
- 孝感合同范本咨询
- 2025年贵金属化合物相关基础化学品合作协议书
- 2025年多级飘尘采样计合作协议书
- 诉讼保全担保承诺协议书(2篇)
- 2025年BN-TIB2导电复合陶瓷制品合作协议书
- 秸秆科研报告范文
- 教学类实践调研报告范文
- GB/T 24503-2024矿用圆环链驱动链轮
- 人教版(2024)英语七年级上册单词表
- 脓毒血症患者的护理查房
- 广东省广州仲元中学2025年高三下学期入学考试试化学试题文试卷含解析
- 4《海燕》公开课一等奖创新教学设计
- 2022年全国职业院校技能大赛赛项-ZZ-2022039戏曲表演赛项基础知识试题答案(70公开题)
- 中国高血压防治指南(2024年修订版)核心要点解读
- T-CERS 0007-2020 110 kV及以下变电站 并联型直流电源系统技术规范
- 金属焊接和切割作业教案
- 定制公司用工合同范本
- 《遥感地质学》全册配套完整教学课件
评论
0/150
提交评论