文档详情

汇编语言课程设计.doc

发布:2017-02-08约1.01万字共16页下载文档
文本预览下载声明
《 汇编语言》课程设计 任 务 书 一、题目 1.简单的计算器 2.字典 3.“Pc”钢琴 二、目的: 本次课程设计的目的是提高学生分析问题、解决问题的能力以及实际动手能力,进一步加深学生对汇编语言程序设计基本理论的理解,使学生熟练掌握汇编语言程序上机调试的方法技巧、结构化程序设计技术及高级汇编语言技术,能编写较复杂的应用程序,为学习后继课程打下扎实的基础。 三、已知技术参数和设计要求: 1.编写一个有符号多位十进制数的四则运算计算器程序,所输入的算式如下例所示: -278+32= -132――12= 11*-32= -1234/-18= 要求程序能接收键入的算式,在接收到‘=’号时,计算并以有符号十进制数的形式显示结果,然后允许用户继续键入算式。如果键入算式后再键入‘.’,则显示结果并结束整个程序。(‘/’为整除) 2.已知一个由英语单词组成的字符串已按字典序排好,每个单词以空格符为结束,该串的首二字节为16位无符号二进制数,用以说明串的长度。试编程能从键盘上输入单词(以空格字符为结束),若字符串中没有该单词,则将该单词插入该串适当的位置,使其仍保持字典序,并修改串长度,显示单词在串中位置及串长度;若字符串中有该单词,则显示字符串中所有包含该单词的单词,及其在字符串中的位置。 3.编写程序,程序运行时使PC机成为一架可弹奏的“钢琴”。当按下数字键0~9时,发出6,7,1,2,3,4,5,6,7,i,十个音调,按‘.’则退出“钢琴”状态。 总体要求 1)程序结构清晰,相对独立的功能应尽量用子程序实现 2)有较多提示信息,以方便用户使用 3)能检测用户输入的错误,并作相应处理 4)每个程序应作较多测试,以证明程序的正确性 实验一: 源代码: DATA SEGMENT SIG DB 00H ;用来记录要进行的运算 NUM1 DW 0 ;用来记录输入的第一个数 NUM2 DW 0 ;用来记录输入的第二个数 X DB 10 ;当输入的下一个数字时,大小为前一个数需要乘10 DATA ENDS ;再加上当前的数 CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START: MAINT1: MOV AH,1 ;输入要运算的算式 INT 21H MAINT3: CMP AL,30H ;和0作比较 JL L1 ;小于0时转去L1 CMP AL,3DH JZ MAINT2 ;当输入”=”时转去MAINT2进行计算结果 CALL BIN ;调用子程序BIN,计算数值真实大小 CMP DX,1 JNZ L5 NEG BX ;当DX为1使需对BX进行取反 MOV DX,0 ;恢复DX L5: CMP CX,1 JZ L3 MOV NUM2,BX ; CX不等于1时记录当前输入的第二个数 JMP MAINT3 L3: MOV NUM1,BX ;记录当前输入的第一个数 JMP MAINT3 L1: CMP AL,2EH JZ quit ;当输入的字符为”.”时转去quit,即程序运行结束 CMP CX,1 JNZ L2 MOV SIG,AL ;当CX不等于1时,即为当前要进行的运算 MOV CX,2 JMP MAINT1 ;返回MINT1继续输入算式 L2: CMP AL,2DH JNZ MAINT1 MOV DX,1 JMP MAINT1 quit: MOV AH,4CH ;程序运行结束 INT 21H MAINT2: CMP SIG,+ ;SIG为”+”时进行加法操作 JNZ S1 MOV AX,NUM1 MOV BX,NUM2 ADD AX,BX JMP MAINT4 S1: CMP SIG,- ;SIG为”-”时进行减法操作 JNZ S2 MOV AX,NUM1 SUB AX,NUM2 JMP MAINT4 S2: CMP SIG,* ;SIG为”*”时进行乘法操作 JNZ S3 MOV AX,NUM1 MOV DX,0 IMUL NUM2 JMP MAINT4 S3: MOV AX,NUM1 ;否则进行除法运算 MOV BX,NUM2 IDIV BL CBW MAINT4: MOV BP,SP ;当数为负数时进行取反操作 TEST AX,8000H JZ OUT2 MOV BX,AX MOV DL,- MOV AH,2 INT 21H MOV AX,BX NE
显示全部
相似文档