




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、上机作业四一.实验目的.增强和提高汇编语言程序设计的能力,掌握模块化程序设计的方法.熟练掌握DOS常用功能的调用方法.二.试验仪器586微机一台三.实验内容编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的五个命 令(1-5),各命令功能分别为:(1)按下“1”键,完成字符串小写字母变成大写字母。用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符 串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。用户按 键,重做,按ESC键,返回主菜单。(2)按下“2”键,完成找最大值(二选一)。a.接收用户输入的可显示字符串(
2、以回车结束),程序将其中ASCH码值最大的字符显示出 来;b.接收用户输入假设干个无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中 最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。(3)按下“3”键,完成排序(二选一)。a.接收用户输入的可显示字符串,以回车结束。程序按ASCH码值大小由大到小排序并输出 显示;b.接收用户输入假设干个有符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中 最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。(4)按下“4”键,显示时间。首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结束)然后, 在
3、屏幕上不断显示时间,格式为:XX (时D : XX (分):XX (秒)最好定点显示。用户按任一键,重新对时,按ESC键,返回主菜单。(5)按下“5”键,结束程序运行,返回系统提示符。四.程序代码STACK SEGMENT STACKDB 256 DUP(?)TOP LABEL WORDSTACK ENDSDATASEGMENTTABLEDW Gl, G2, G3, G4, G5STRING 1DB 1. Change small letters into capital letters of string;1, ODH, OAH,STRING2DB 2 Find the maximum of
4、 string;1, ODH, OAH, $INC CHCALLADDNEWMOV DL, 0MOV AL, 0NEXT:INC SIDEC CLCMP CL, 0JNZ FNDNUMCMP DL, 1JNZ TOTALINC CHCALLADDNEWTOTAL:MOV NUMBUF, CHMOV AL, 1JMP CRTNUMERRNUM:MOV AL, 0CRTNUM:RETCINJNT ENDPADDNEW PROC NEAR;入口参数:CH (数据组数据个数)、 ;出口参数:无PUSH AXLEA BX, NUMBUFMOV AL, CHCBWADD BX, AXPOP AXMOV B
5、X, ALRETADDNEW ENDPMPSORT PROC FARMOV AL, NUMBUFCMP AL, 1JBE NOSORTCBWMOV CX, AXLEA SI, NUMBUFADD SI, CXDEC CXLP1:;数据组数据个数加1;清零;依次检查各字符;判断是否有未加入的数据;置数据组数据个数;输入数据无错误;输入数据有错误;增加新数AL (当前数据x);数据组排序;假设只有一个元素,停止排序;SI指向数据组首地址;SI指向数据组末地址 ;外循环次数 ;外循环开始;交换标志置0;内循环开始;交换操作;交换标志置1;判断交换标志PUSH CXPUSH SIMOV DL, 0LP
6、2:MOV AL, SI CMP AL, SI - 1J JAE NOXCHG XCHG AL, SI - 1 MOV LSI, AL MOV DL, 1NOXCHG:DEC SILOOP LP2 POP SI POP CX CMP DL, 1 JNZ NOSORT LOOP LP1 NOSORT:RET MPSORTENDPINT_OUT PROC FAR;输出数据组MOV AL, NUMBUFCBWMOV CX, AXMOV BL, 10HLEA SI, NUMBUF + 1PRINT:MOV AL, SICALLOUTNUMINC SIMOV AH, 2MOV DL,INT21HLOOP
7、 PRINT RET INT_OUT ENDPOUTNUM PROC NEAR;将十进制数以十六进制输出;入口参数:AL (待转换的数据),BL (转换进制数16) ;出口参数:无MOV AH, 0DIV BLPUSH AXCMP AH, 10JB PNUMADD AH, 7PNUM:ADD AH, 30HMOV DL, AHPOP AXPUSH DXCMP AL, 0 JZ OUTN CALL OUTNUMOUTN:POP DXMOV AH, 2 INT21HRETOUTNUM ENDPTIMCHK PROC FAR ;设置显示器方式 MOV AH, 0 MOV AL, 3;MOV BL,
8、0;INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 6 INT 10H MOV AH, 9 LEA DX, IN_TIMINT21HMOV AH, OAH LEA DX, KEYBUF INT21H;设定并显示时间;清屏;页号;列号;行号;设置提示光标位置设置;时间串提不;输入时间串MOV BL, 10MOV AL, KEYBUF + 2SUB AL, *0MUL BLADD AL, KEYBUF + 3SUB AL, *0*CMP AL, 0JB INVALIDCMP AL, 24JAE INVALID;判断时有效性;判断分有效性;判断秒有效性;置系统时间
9、;显示时间子程序;清屏;页号;列号;行号;提示信息光标位置设置;输出提示信息MOV CH, ALMOV AL, KEYBUF + 5 SUB AL, OMULBLADD AL, KEYBUF + 6 SUB AL, OCMP AL, 0 JB INVALID CMP AL, 60 JAE INVALID MOV CL, ALMOV AL, KEYBUF+ 8 SUB AL,。MUL BLADD AL, KEYBUF + 9 SUB AL, OCMP AL, 0 JB INVALID CMP AL, 60 JAE INVALID MOV DH, AL MOV DL, 0 MOV AH, 2DH
10、INT21HINVALID:CALL TIMERETTIMCHK ENDPTIME PROC;设置显示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10HMOV AH, 2MOV BH, 0MOV DL, 10MOV DH, 9 INT 1 OHMOV AH, 9LEA DX, HINTSTR INT21HDISP1:MOV AH, 2MOV BH, 0 MOV DL, 72 MOV DH, 0 INT 10H MOV AH, 2CH INT21H MOV AL, CH CALL SHOWNUM MOV AH, 2 MOV DL, T INT21HMOV AL, CL
11、 CALL SHOWNUM MOV AH, 2 MOV DL, INT21HMOV AL, DH CALL SHOWNUM MOV AH,02H MOV DX,090AH MOV BH,0INT 1 OHMOV BX,()()18HRE:MOV CX,0FFFFHREA:LOOP READEC BX JNZ RE MOV AH, OBH INT21H CMP AL, 0 JZ DISP1 RETTIME ENDP;页号;列号;行号;提示光标位置设置;取系统时间,CH,CL,DH分别存放时/分/秒;显示时;显示分;显示:秒;设置光标位置;延时;或MOV AH,01H;INT 16H;JE DIS
12、P1;检查键盘状态SHOWNUM PROC;把AL中的数字以十进制输出;入口参数:AL (待显示的数据);出口参数:无CBWPUSH CXPUSH DXMOV CL, 1()DIV CLADD AH, OMOV BH, AHADD AL, O MOV AH, 2 MOV DL, AL INT21H MOV DL, BH INT21H POP DX POP CX RET SHOWNUM ENDPCODE ENDSEND START五.实验体会实验中遇到的问题以及解决方法:在这几次的编程实验中,我遇到了许多问题。首先, 在最开始的时候,无论怎么输入都显示:lnasm?不是内部或外部命令,也不是可运
13、行的程 序或批处理文件。后来发现把自己编写的asm文件放到E盘masm文件夹里就行了,之后的每 一步实验按照要求一步一步做,就都能出来结果。还有就是不懂得如何输出自己所得到的结果, 于是先抄写课本上所给的程序,当出现自己想要的结果之后,再与同学讨论输出结果的语句,充 分理解其内涵。心得体会:通过几次的上机实验课,我懂得了如何使用txt文档编写asm文件。然后对 其进行编译和连接。当完成上述过程后,可以使用DEBUG功能来对程序进行调试,这样,就可 以清楚地看到每一步运行时各个寄存器的状态。同时: 通过自己编译程序,我能够更好地理解课 本中的许多程序,也能够自己编写一些简单的程序。总而言之,通过
14、这几次的上机实验课,我 学会了通过用计算机编译程序来处理自己在理论课学习上遇到的各种问题。希望在以后的实验中 能够积累的越来越多,对此体会也越来越深。STRING3 STRING4 STRINGS STRINGNDB 3. Sort for datas;, ODH, OAH, DB14. Show Time;1, ODH, OAH, $ DB 5 Exit/, ODH, OAH, $DB Input the number you select (1-5) : $IN_STR DB Input the string (includingletters & numbers, less than 6
15、0 letters)ODH, OAH,PRESTR NEWSTR OUT_STR MAXCHR IN_NUM OUT_NUM IN_TIM HINTSTR KEYBUFDB Original stringDBNew stringNUMBUFDATADB The string is $DB The maximum is $DB Input the numbers (0-255, no more than 20 numbers):ODH, OAH,DB Sorted numbers : ODH, OAH, $DB Correct the time (HH:MM:SS) :DB Press ESC,
16、 go back to the menu; or press any key to play again!$ DB61DB ?DB 61 DUP(?)DB?DB 20 DUP(?)ENDSCODESEGMENTASSUME CS:CODE, DS:DATA,SS:STACKSTART:MAIN:AGAIN:MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS,AXMOV SP, OFFSETTOPCALL FARPTR MENU;设置显示器MOV AH, 2 MOVBH,0 MOVDL,41 MOVDH, 10 INTI OHMOV AH, 1 INT 21H C
17、MPAL/1 JB AGAIN CMP AL, 5 JA AGAIN SUBAL/T SHLAL, 1 CBWLEA BX, TABLE;页号;列号;行号;光标位置设置;N-1;(N-l)*2;AL-AXADD BX, AXJMP WORD PTR BXGl:CALL FAR PTR CHGLTRMOV AH, 8INT21HCMP AL, 1BHJZ MAINJMPG1G2:CALL FAR PTR MAXLTRMOV AH, 8INT21HCMP AL, 1BHJZ MAINJMP G2G3:CALL FAR PTR SORTNUMMOV AH, 8INT21HCMP AL, 1BHJZ
18、MAINJMP G3G4:CALL FAR PTR TIMCHKMOV AH, 8INT21HCMP AL, 1BHJZ MAINJMP G4G5:MOV AH, 4CHINT21HMENU PROC FAR;显示主界面;设置显示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H;清屏MOV AH, 2MOV BH, 0;页号MOV DL, 5;列号MOV DH, 5;行号INT 10HMOV AH, 9LEA DX, STRING 1INT21HMOV AH, 2MOV DL, 5MOV DH, 6INT 10HMOV AH, 9LEA DX, STRING2IN
19、T21HMOV AH, 2MOV DL, 5MOV DH, 7INT 10HMOV AH, 9LEA DX, STRINGSINT21HMOV AH, 2MOV DL, 5MOV DH, 8INT 10HMOV AH, 9LEA DX, STRING4INT21HMOV AH, 2MOV DL, 5MOV DH, 9INT 10HMOV AH, 9LEA DX, STRINGSINT21HMOV AH, 2MOV DL, 5MOV DH, 10INT 10HMOV AH, 9LEA DX, STRINGNINT21HRETMENU ENDPCHGLTR PROC FARRECHG:;光标位置设
20、置;列号;行号;光标位置设置;列号;行号;光标位置设置;列号;行号;光标位置设置;列号;行号;光标位置设置;列号;行号;光标位置设置;将输入字符串中小写字母便换成大写字母;设置显示器方式LCHG:NOCHG:MOV AH, 0MOV AL, 3MOV BL, 0INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 5INT 10HMOV AH, 9LEA DX, TN_STRINT21HMOV AH, 2MOV DL, 5MOV DH, 6INT 10HMOV AH, OAHLEA DX, KEYBUFINT21HCMP KEYBUF + 1,0JZ RECHGL
21、EA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR BX, $MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 7INT 1 OHMOV AH, 9LEA DX, PRESTRINT21HMOV AH, 9LEA DX, KEYBUF + 2INT21HLEA BX, KEYBUF + 2CMP BYTE PTR BXJ, 61H JB NOCHG;清屏;页号;列号;行号;输入提示光标位置设置;输入字符串提示;列号;行号;输入字符串光标位置设置;输入字符串;判断输入字符串是否为空串;在
22、输入字符串尾加结束标志$;页号;列号;行号;源字符串提示光标位置设置;输出源字符串提示;输出源字符串AND BYTE PTR BX, ODFHINC BXLOOPLCHGMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 8INT 10HMOV AH, 9LEA DX, NEWSTRINT21HMOV AH, 9LEA DX, KEYBUF + 2INT21HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 9INT 10HMOV AH, 9LEA DX, HINTSTRINT 21HRETCHGLTR ENDP;将字符串中小写字母转换成大写字母;页号;列
23、号;行号;新字符串提示光标位置设置;输出新字符串提示;输出新字符串;页号;列号;行号;提示信息光标位置设置;输出提示信息MAXLTR PROC FAR REMAX:;设置显示器方式MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10HMOV AH, 2 MOV BH, 0 MOV DL, 5MOV DH, 5 INT 10HMOV AH, 9LEA DX, IN_STR INT21HMOV AH, 2 MOV DL, 5 MOV DH, 6 INT 10H MOV AH, OAH LEA DX, KEYBUF;在输入字符串中找出最大值;清屏;页号;列号,仃节;输入提示光标位
24、置设置;输入字符串提示;列号;行号;输入字符串光标位置设置;输入字符串;判断输入字符串是否为空串INT21HCMP KEYBUF + 1,0JZ REMAXLEA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AX;在输入字符串位加结束标志$;页号;列号;行号;源字符串提示光标位置设置MOV BYTE PTR BX, TMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 7INT 10HMOV AH, 9LEA DX, OUT STR;输出字符串提示INT21HMOV AH, 9LEA DX, KEYBUF + 2;
25、输出字符串;页号;列号;行号;新字符串提示光标位置设置;输出字符串;页号;列号;行号;新字符串提示光标位置设置INT21HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 8INT 10HMOV AH, 9LEA DX, MAXCHR;输出字符串中最大值提示INT21HMOV DL, 0LEA BX, KEYBUF + 2LCMP:CMP BX, DLJB NOLCHGMOV DL, BXNOLCHG:INC BX;找出字符串中最大字符,放入DL;输出字符串中最大字符;页号;列号;行号;提示信息光标位置设置;找出字符串中最大字符,放入DL;输出字符串中最大字符;页号;列号;
26、行号;提示信息光标位置设置LOOP LCMPMOV AH, 2INT21HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 9INT 10HMOV AH, 9LEA DX, HINTSTR INT21HRETMAXLTR ENDPSORTNUM PROC FARRESORT:;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0 INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 5INT 1 OHMOV AH, 9LEA DX, IN_NUMINT21HMOV AH, 2MOV DL, 5MOV DH, 6INT 10HMOV AH, OAHLEA DX, KEYBUFINT21HCALL CINJNTCMP AL, 0 JZ RESORT CMP NUMBUF, 0 JZ RESORT;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一例压力性护理个案分析
- 客厅新风施工方案
- 缺铁性贫血的治疗与护理
- 新课标2024-2025学年高中地理第二章自然环境中的物质运动和能量交换第一节典型地貌课时1河流地貌和喀斯特地貌学案含解析湘教版必修1
- 2024高中地理刷题首秧区域地理第3章世界地理分区和主要国家第八节北美-美国练习含解析新人教版
- 2025版高考数学二轮复习第1篇专题8函数与导数第1讲小题考法-函数的图象与性质学案
- 2024-2025学年高中物理第三章磁场3.4通电导线在磁场中受到的力课后强化演练含解析新人教版选修3-1
- 特约经销合同书5篇
- 易货交易标准合同10篇
- 漳州市事业单位招聘笔试真题2024
- GB/T 39489-2020全尾砂膏体充填技术规范
- GB/T 11211-2009硫化橡胶或热塑性橡胶与金属粘合强度的测定二板法
- 《民法》全册精讲课件
- 望神 色 形态课件
- 镁及镁合金的耐蚀性课件
- 企业标准编写模板
- 新教科版科学五年级下册实验计划表
- 原厂授权书及售后服务承诺函【模板】
- 自动控制原理全套课件
- EXCEL公式进行经纬度与XY坐标的相互转换
- 059.商业计划书和可行性报告精制食油厂年产万吨精制山茶油项目可行性研究报告
评论
0/150
提交评论