基于8086与Proteus仿真的44键盘计算器的设计 下载本文

POP AX RET ADDP ENDP ;减法子程序 SUBP PROC

PUSH AX MOV AX,X1 SUB AX,X2 MOV Y,AX POP AX RET SUBP ENDP ;乘法子程序 MULP PROC

PUSH AX PUSH DX MOV AX,X1 MOV DX,X2 MUL DX MOV Y,AX POP DX POP AX RET MULP ENDP ;除法子程序 DIVP PROC

PUSH AX PUSH BX PUSH DX MOV DX,0 MOV AX,X1 MOV BX,X2 DIV BX MOV Y,AX POP DX POP BX POP AX RET DIVP ENDP

;DISP PROC

显示子程序 PUSH BX PUSH AX MOV BH,0

LEA SI,DISCODE

CALL BITP ; CMP CC,4 JZ QIAN

X中的数值按位显示出来 测试X位数 ,将 CMP CC,3 JZ BAI CMP CC,2 JZ SHI CMP CC,1 JMP G JMP NONE

QIAN: MOV AH,11100000B ;从第始显示

4位开

MOV AL,AH OUT 44H,AL MOV BL,X[0] MOV AL,[SI+BX] OUT 42H,AL CALL DELY MOV AL,0 OUT 42H,AL

BAI: MOV AH,11010000B ;始显示

MOV AL,AH OUT 44H,AL MOV BL,X[1] MOV AL,[SI+BX] OUT 42H,AL CALL DELY MOV AL,0 OUT 42H,AL

SHI: MOV AH,10110000B ;始显示 MOV AL,AH

OUT 44H,AL MOV BL,X[2] MOV AL,[SI+BX] OUT 42H,AL CALL DELY MOV AL,0 OUT 42H,AL

G: MOV AH,01110000B ;始显示

MOV AL,AH OUT 44H,AL MOV BL,X[3] MOV AL,[SI+BX] OUT 42H,AL CALL DELY

从第3位开

从第2位开

从第1位开

JMP EXIT4

NONE: MOV AL,0 ;X中没有数据,不显示 OUT 42H,AL EXIT4: POP AX POP BX RET DISP ENDP

;分析数据位数子程序 BITP PROC

CMP X[0],0 ;为4位数

JNZ FOURBIT

CMP X[1],0 ;为3位数

JNZ THREEBIT

CMP X[2],0 ;为2位数

JNZ TOWBIT

CMP X[3],0 ;为1位数

JNZ ONEBIT

JMP ZER0BIT ; FOURBIT: MOV CC,4 JMP EXIT5 THREEBIT: MOV CC,3 JMP EXIT5 TOWBIT: MOV CC,2 JMP EXIT5 ONEBIT: MOV CC,1 JMP EXIT5 ZER0BIT: MOV CC,0 EXIT5: RET BITP ENDP

;延时子程序 DELY PROC

PUSH CX MOV CX,100 LOOP $ POP CX RET DELY ENDP

CODE ENDS

END START

如果X[0]不为0,则数据如果X[1]不为0,则数据如果X[2]不为0,则数据如果X[3]不为0,则数据否则,没有数据 七、课程设计心得与体会

通过本次综合设计,我们组分工负责不同的部分,实现不同的功能,并且将最近所学的内容复习了一遍,对课程内容的理解也有所加深。本次实验的代码大部分来源于网络,但是我们对其中部分代码进行了修改,使其得到了优化。并且认真把代码分析了一遍理解了每一步的设计思路和方法。总的来说我们完成了本次综合设计全部内容。

希望以后可以有更多的机会,有更大的平台,提供给我起使我在短短的有限的大学生活中学习更多更有用的知识,收获更多实践性的技巧,可以为将来的工作打下良好的基础,可以为自己以后的未来铺下更好的台阶

八、Protuse硬件仿真结构图