




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理课程设计设计一:从键盘输入十六进制数并显示出二进制值设计二:字符串匹配设计设计三:字符和数据显示的设计设计四:键盘输入小写字母转换成大写字母设计五:计算N!的设计 2011-7-6设计一:从键盘输入十六进制数并显示出二进制值实验目的:掌握接收键盘数据的方法,并了解数据显示时须转换为ASCII码的原理。实验内容:将键盘接收到的4位十六进制数据转换为等值的二进制数,再显示在屏幕终端上。流程图:程序源代码:CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21HENDMDATA SEGMENTMARK DB ?MESS DB INPUT THE NUMBER! Press Enter to Transition,Press Space to Exit!,0DH,0AH,Input:$ERROR DB 0DH,0AH, Input Error!,0DH,0AH,$DATA ENDSSTACK SEGMENTSTA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SP,TOPHEAD: CRLF MOV MARK,0 MOV AH,09H LEA DX,MESS INT 21H ;显示提示输入的信息 CALL GETNUM ;接收键入数值送DX CMP MARK,01H JE HEAD MOV CX,0010H ;16位 MOV BX,DXTTT: ROL BX,1 ;循环左移1位 MOV DL,BL AND DL,01H ;屏蔽掉高7位 ADD DL,30H MOV AH,02H INT 21H ;显示二进制位对应的ASCII字符 LOOP TTT JMP HEADFINI: MOV AH,4CH INT 21H ;返回DOSGETNUM PROC NEAR ;子程序,接收键入数值送DX PUSH CX XOR DX,DXGGG: MOV AH,01H INT 21H CMP AL,0DH ;输入为回车,则进行转换 JE PPP CMP AL,20H ;输入为空格,则退回DOS JE FINI CMP AL,30H JB KKK SUB AL,30H CMP AL,0AH JB GETS CMP AL,11H JB KKK SUB AL,07H CMP AL,0FH JBE GETS CMP AL,2AH JB KKK CMP AL,2FH JA KKK SUB AL,20HGETS: MOV CL,04 SHL DX,CL XOR AH,AH ADD DX,AX JMP GGGKKK: MOV AH,09H MOV DX,OFFSET ERROR INT 21H MOV MARK,01HPPP: PUSH DX CRLF POP DX POP CX RETGETNUM ENDPCODE ENDSEND START运行结果设计二:字符串匹配设计实验内容:编写程序实现两个字符串比较。如相同,则显示“MATCH”,否则显示“NO MATCH”。源程序:CRLF MACRO ;显示回车 MOV DL,0DH MOV AH,02H INT 21H MOV AH,02H MOV DL,0AH INT 21HENDMDATA SEGMENTMESS1 DB MATCH,0DH,0AH,$MESS2 DB NO MATCH,0DH,0AH,$MESS3 DB INPUT STRING1!,0DH,0AH,$MESS4 DB INPUT STRING2!,0DH,0AH,$MAXLEN1 DB 100STRING1 DB 100 DUP(?)MAXLEN2 DB 100STRING2 DB 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AH,09H MOV DX,OFFSET MESS3 INT 21H ;显示输入提示信息1 MOV AL,MAXLEN1 MOV BX,OFFSET STRING1 MOV BX,AL ;最大字符缓冲 MOV AH,0AH MOV DX,OFFSET STRING1 INT 21H ;接收键入的字符串1 CRLF MOV AH,09H MOV DX,OFFSET MESS4 INT 21H ;显示输入提示信息2 MOV AL,MAXLEN2 MOV BX,OFFSET STRING2 MOV BX,AL ;最大字符缓冲设置 MOV AH,0AH MOV DX,OFFSET STRING2 INT 21H ;接收键入的字符串2 CRLF CLD LEA SI,STRING1 ;字符串1的地址送给SI MOV CL,SI+1 ;字符串1的字符数送给CX MOV CH,0KKK: LEA DI,STRING2 ;字符串2的地址送给DI MOV DL,DI+1 ;字符串2的字符数送给DX MOV DH,0 ZJ2: MOV AL,SI+2 ;字符串1的第一个字符在字符串2中匹配 CMP DI+2,AL JE ZJ3 ;匹配成功则跳转 ZJ1: INC DI ;指向字符串2下一个字符 DEC DX JZ GGG ;字符串2完,不匹配 JMP ZJ2 ;字符串2没完,重新匹配 ZJ3: DEC CX JZ MMM ;字符串1完,匹配 DEC DX JZ GGG ;字符串2完,不匹配 INC SI ;指向串1下一个字符 INC DI ;指向串2下一个字符 MOV AL,SI+2 CMP DI+2,AL JE ZJ3 ;匹配,跳转 DEC DX JZ GGG ;字符串2完,不匹配 LEA SI,STRING1 ;重新从串1的第一个字符匹配 MOV CL,SI+1 MOV CH,0 INC DI JMP ZJ2MMM: MOV AH,09H ;输出匹配信息 MOV DX,OFFSET MESS1 INT 21H JMP PPPGGG: MOV AH,09H ;输出不匹配信息 MOV DX,OFFSET MESS2 INT 21H PPP: MOV AH,4CH ;程序终止 INT 21HCODE ENDS END START 设计三:字符和数据显示的设计实验内容:编写程序,先显示信息“INPUT STRING IS”,在接受字符。如为0-9,则计数器加1,并显示数据,非数字,则直接显示,但不计数。源程序:CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21HENDM DATA SEGMENTMESS1 DB INPUT STRING IS $MESS2 DB Char = $MESS3 DB Not number = $MESS4 DB Num= $TOTAL DW ?DATA ENDSSTACK SEGMENTSTA DW 32 DUP (?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SP,TOP ;初始化 MOV BX,0000H ;计数值清0 MOV AH,09H MOV DX,OFFSET MESS1 INT 21H CRLFXXX: MOV AH,01H INT 21H ;接收键入字符 CMP AL,20H JZ UUU ;是空格键则转UUU CMP AL,0DH JNZ III CRLF ;是回车键则转UUU JMP UUUIII: CMP AL,30H JB YYY CMP AL,39H JBE VVV ;0-9转VVVYYY: INC BX ;计数值加1VVV: INC TOTAL JMP XXXUUU: CRLF MOV AH,09H LEA DX,MESS2 ;显示字符总数 INT 21H MOV AX,TOTAL CALL DISP MOV AH,02H MOV DL,H INT 21H CRLF ;回车换行MOV AH,09H MOV DX,OFFSET MESS3INT 21H ;显示非数字字符总数MOV AX,BXCALL DISP MOV AH,02HMOV DL,HINT 21H ;十六进制数标志CRLFMOV AH,09HLEA DX,MESS4 ;显示数字字符总数INT 21HMOV AX,BXSUB TOTAL,AXMOV AX,TOTALCALL DISPMOV AH,02HMOV DL,HINT 21HMOV AH,4CHINT 21HDISPP PROC NEAR ;显示子程序,显示AL中的数按十六进制数方式MOV BL,AL ;AL中数送BLKKK: MOV DL,BLMOV CL,04ROL DL,CLAND DL,0FHCALL DISPL ;显示字节高位MOV DL,BLAND DL,0FHCALL DISPL ;显示字节低位RETDISPP ENDPDISPL PROC NEARADD DL,30H ;由数值转为参应字符的ASCII码CMP DL,3AH JB DDD ;是0-9转DDD ADD DL,07H ;是A-FDDD: MOV AH,02H INT 21H ;显示DL中字符 RET ;返回DISPL ENDP ;显示子程序,显示AX中的数按十六进制数方式DISP PROC NEAR PUSH BX PUSH CX PUSH DX PUSH AX ;入栈保存 MOV AL,AH CALL DISPP ;显示高字节 POP AX CALL DISPP POP DX POP CX POP BX RET ;出栈DISP ENDPCODE ENDS END START设计四:键盘输入小写字母转换成大写字母实验内容: 编写程序,接收键盘字符,并将其中的小写字母变为大写字母,然后显示在屏幕上。源程序:DATA SEGMENT p1 db 100 P2 db 0array db 100 dup(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX mov dx,offset p1 MOV AH,0AH INT 21H xor bx,bx mov BL,p2 mov arraybx,$ mov di,0ffffh next: inc di cmp arraydi,$ je exit cmp arraydi,61h jl next cmp arraydi,7ah jg next sub arraydi,20h jmp next exit: mov p1, 0dh mov p2, 0ah MOV AH,09H INT 21H MOV AH,4CH INT 21HCODE ENDS END START设计五:计算N!的设计实验内容:编写程序,计算N!的程序。数值N由键盘输入,结果显示在屏幕上。N的范围为065535,即刚好能被16的寄存器容纳。源程序:CRLF MACRO;回车,换行 MOV AH, 02H MOV DL, 0DH INT 21H MOV AH, 02H MOV DL, 0AH INT 21HENDMDATA SEGMENTMESS1 DB INPUT THE NUMBER ACCORDING TO HEXNUM!,0DH,0AH,$MESS2 DB THE RESULT IS: $ERROR DB INPUT ERROR! INPUT ONCE MORE!,0DH ,0AH,$LEN DW 1CY DW ?BUF DW 256 DUP(0)DATA ENDSSTACKS SEGMENT STACK STACK DW 32 DUP(?)STACKSENDSCODE SEGMENTASSUME CS: CODE, DS:DATA, ES:DATA, SS:STACKSSTART:MOV AX, DATA MOV DS,AX MOV ES, AX MOV AH, 09H MOV DX,OFFSET MESS1 INT 21H ;显示输入提示信息 CALL GETNUM ;读取键入的N值 MOV BP, DX ;N值送BP CMP BP, 0 JZ EEE CMP BP, 1 JZ EEE ;N=0或N=1则转EEE MOV SI, OFFSET BUF ;缓冲区首址 MOV SI,DX ;缓冲区初始化为值NXXX: DEC BP ;N值减1 CMP BP,0001H JZ LLL ;若为1则转LLL XOR BX,BX ;偏移指针清0 MOV WORD PTR CY,0 ;进位单元清0 MOV CX,LEN ;当前结果长度送CXTTT: MOV AX, SI+BX MUL BP ;相乘 ADD AX,CY ;加低位进位 JNC JJJ ;结果无进位转JJJ INC DX ;有进位将高位单元加1JJJ: MOV SI+BX,AX ;结果送缓冲区中 MOV CY,DX ;高位单元送进位单元 INC BX INC BX ;一个字长度 LOOP TTT ;循环 CMP DX, 0000H JZ BBB ;最后1次的进位为0则转BBB INC WORD PTR LEN ;长度加1 MOV SI+BX,DX ;进位送缓冲区中BBB: JMP XXXEEE: MOV SI,OFFSET BUF MOV WORD PTR SI,1 ;结果为1LLL: MOV AH, 09H MOV DX,OFFSET MESS2 INT 21H ;显示表头 MOV CX,LEN MOV BX,CX ;长度 DEC BX SHL BX,1 ;1个字为两个字节CCC: MOV AX, SI+BX CALL DISP DEC BX DEC BX ;显示结果 LOOP CCC MOV AX,4C00H ;结束 INT 21HDISP1 PROC NEAR ;显示字符(AL) MOV BL, AL MOV DL, BL MOV CL, 04 ROL DL, CL AND DL, 0FH CALL DISPL ;显示高位 MOV DL, BL AND DL, 0FH CALL DISPL ;显示低位 RETDISP1 ENDPDISPL PROC NEAR ;显示一位(DL0XH) ADD DL, 30H CMP DL, 3AH JB DDD ADD DL, 07HDDD: MOV AH, 02H INT 21H RETDISPL ENDPDISP PROC NEAR ;显示4位数(HEX) PUSH BX PUSH CX PUSH DX PUSH AX MOV AL, AH CALL DISP1 POP AX CALL DISP1 POP DX POP CX POP BX RETDISP ENDPGETNUMPROC NEAR ;字符匹配程序 PUSH CXREGET:XOR DX, DXGGG: MOV AH, 01H INT 21H CMP AL, 0DH JZ PPP CMP AL, 20H JZ PPP SUB AL, 30H JB KKK CMP AL, 0AH JB GETS CMP AL,11H JB KKK SUB AL, 07H CMP AL, 0FH JBE GETS CMP AL, 2AH JB KKK CMP AL, 2FH JA KKK SUB AL, 20HGETS: MOV CL, 04H SHL DX,CL XOR AH, AH ADD DX ,AX JMP GGGKKK: CRLF MOV AH, 09H MOV DX,OFFSET ERROR INT 21H JMP REGETPPP: PUSH DX CRLF POP DX POP CX RETGETNUMENDP CODE ENDS END START*心得体会*经过了一周的汇编课程设计,我在其中经历了很大的困难,可是也感受到了巨大的幸福。当我面对一个难题,从一筹莫展到逐渐清晰明朗,到最后成功完成任务。只要亲身经历过,才能感受其中的泪水和快乐。更重要的是我们对汇编有了更进一步的理解。有了实际应用的体会,知识更加的融会贯通了。不管是从知识上还是从思维方式上,我们都得到了很大的进步。还有就是深切感受到了从课本以外的世界独立接受新知
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南快消品策划营销方案
- 咸宁团建活动策划方案公司
- 说明文知识总结
- 赣州税务筹划咨询方案
- 2025年营养师鉴定考试冲刺指南:实操技能强化与理论巩固试卷
- 城市智慧化发展案例分析
- 2025年度深基坑专项方案测试卷及答案
- 2024年水利设施管养人员练习题及参考答案详解(完整版)
- 2025年医师定期考核模考模拟试题及参考答案详解(突破训练)
- 2024年安全员考试通关考试题库含完整答案详解(各地真题)
- 《学术英语(综合)》课后答案
- 高中心理健康课程《人际关系-寝室篇》课件
- 水产微生物学
- 电力系统继电保护课程设计报告-三段式距离保护
- 香港永久性居民在内地所生中国籍子女赴香港定居申请表
- 部编人教版五年级上册小学道德与法治 第5课 协商决定班级事务 课件
- 跨境电商亚马逊运营实务完整版ppt课件-整套课件-最全教学教程
- GB∕T 31038-2014 高电压柴油发电机组通用技术条件
- 基层工会经费财务规范化建设
- 亚硒酸 MSDS危险化学品安全技术说明书
- 预防接种家长课堂(课堂PPT)
评论
0/150
提交评论