毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

微机原理课程设计_计算器设计_汇编课程设计

更新时间:2007-10-25:  来源:毕业论文

微机原理课程设计_计算器设计_汇编课程设计|精品课程网站设计|课程设计网报告总结心得

执行时,需在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:
c:\masm>js 3+2

5
c:\masm>js 6*7

2A
c:\masm>js 10-4

c
c:\masm>js 12/3

6
B_P     EQU BYTE PTR
W_P     EQU WORD PTR
D_P     EQU DWORD PTR
CODE    SEGMENT
ASSUME  CS:CODE,DS:CODE
ORG 100H
;主程序开始
NEWSTAR:
JMP STAR
EVEN
NUM1    DW 0,0
NUM2    DW 0,0
NUM3    DW 0,0
JGV4    DW 0,0
YSF     LABEL WORD
YSF1    DB 0
YSF2    DB 0
JUV     DB 0
UV      DB 0
;使DS:SI指向第一有效字符
OVERS   LABEL NEAR
CLD
PUSH AX
OVERS1:
LODSB
CMP AL,' '
JZ OVERS1
CMP AL,9
JZ OVERS1
DEC SI
CMP AL,13
POP AX
RET
;输出一个制表符
TAB     LABEL NEAR
MOV AL,9
JMP SHORT DISP
;输出一个回车换行符
CRLF    LABEL NEAR
MOV AL,13
CALL DISP
MOV AL,10
;显示一个字符
DISP    LABEL NEAR
PUSH AX
PUSH DX
MOV AH,2
MOV DL,AL
INT 21H
POP DX
POP AX
RET
;检查是否为运算符
ISYSF   LABEL NEAR
CLD
LODSB
CALL ISJJ
JZ ISYSF1
CALL ISII
JZ ISYSF1
DEC SI
ISYSF1:
RET
;检查是否是加减运算
ISJJ    LABEL NEAR
CMP AL,'+'
JZ ISYSF1
CMP AL,'-'
RET
;检查是否为乘除运算
ISII    LABEL NEAR
CMP AL,'*'
JZ ISYSF1
CMP AL,'/'
JZ ISYSF1
CMP AL,'\'
RET
;数据输出
;CX=10 十进制
;CX=16 十六进制
DOUT    LABEL NEAR
PUSH AX
PUSH BX
PUSH DX
PUSH BP
XOR BP,BP
DOUT1:
INC BP
PUSH AX
MOV AX,DX
XOR DX,DX
DIV CX
MOV BX,AX
POP AX
DIV CX
PUSH DX
MOV DX,BX
OR BX,AX
JNZ DOUT1
DOUT2:
POP AX
ADD AL,'0'
CMP AL,'9'
JBE DOUT3
ADD AL,'A'-'9'-1
DOUT3:
CALL DISP
DEC BP
JNZ DOUT2
POP BP
POP DX
POP BX
POP AX
RET
;输入数据在DX:AX中返回
;CX=0 数据为10进制
;CX#0 数据为16进制
DATE    LABEL NEAR
PUSH BX
PUSH BP
PUSH DI
XOR AX,AX
XOR DX,DX
DATE1:
MOV DI,AX
LODSB
CMP AL,'0'
JB DATE7
CMP AL,'9'
JA DATE6
DATE2:
AND AX,0FH
SHL DI,1
RCL DX,1
MOV BX,DI
MOV BP,DX
SHL DI,1
RCL DX,1
SHL DI,1
RCL DX,1
JCXZ DATE3
SHL DI,1
RCL DX,1
Jmp short DATE4
DATE3:
ADD DI,BX
ADC DX,BP
DATE4:
ADD AX,DI
ADC DX,0
JMP DATE1
DATE5:
ADD AL,9
JMP DATE2
DATE6:
JCXZ DATE7
CMP AL,'A'
JB DATE7
CMP AL,'F'
JBE DATE5
CMP AL,'a'
JB DATE7
CMP AL,'f'
JBE DATE5
DATE7:
MOV AX,DI
DEC SI
OR DI,DX
POP DI
POP BP
POP BX
RET
;数据1与数据2根据YSF1进行加减运算
JSJJ    LABEL NEAR
MOV AX,NUM2
MOV DX,NUM2+2
CMP YSF1,'+'
JZ JSJJ1
SUB NUM1,AX
SBB NUM1+2,DX
JMP SHORT JSJJ2
JSJJ1:
ADD NUM1,AX
ADC NUM1+2,DX
JSJJ2:
RET
;数据1与数据2根据YSF1进行乘除运算
JSII1   LABEL NEAR
MOV BX,OFFSET NUM1
JMP SHORT JSII2_1
;数据2与数据3根据YSF2进行乘除运算
JSII2   LABEL NEAR
MOV BX,OFFSET NUM2
JSII2_1:
DB 66H
MOV AX,[BX]
DB 66H
MOV CX,[BX+4]
CMP YSF2,'*'
JNZ JSII2_2
DB 66H
IMUL CX
JMP SHORT JSII2_3
JSII2_2:
DB 66H
CWD
DB 66H
IDIV CX
CMP YSF2,'/'
JZ JSII2_3
DB 66H
XCHG DX,AX
JSII2_3:
DB 66H
MOV [BX],AX
RET

微机原理课程设计_计算器设计_汇编课程设计下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。