汇编计算器程序实验报告文档格式.docx
- 文档编号:22031128
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:13
- 大小:119.03KB
汇编计算器程序实验报告文档格式.docx
《汇编计算器程序实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《汇编计算器程序实验报告文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
该模块实现了赋权宏fq为(,),*,、,+,-,=等符号分别赋权值为5,1,4,4,3,3,0.从而可以通过设定的权值来判断优先级
(5)清屏子程序模块
本模块先将即将用到的ax,bx,cx,dx寄存器入栈保存,通过ah=06h屏幕上卷功能,用bh=07h将屏幕设置为黑底白字,给dh,dl赋值将其清屏位置设定在30行80列范围,从而实现了清屏功能,然后再讲ax,bx,cx,dx寄存器出栈
(6)回车换行宏模块
通过2号功能的输出功能,将0dh赋予dl输出,再调用2号功能,将0ah赋予dl输出,从而实现回车换行功能。
(7)9号功能显示字符串宏模块
通过定义宏show,用9号显示功能,通过变元str将字符串显示出来
程序设计流程图:
=
数字
符号
y
yn
yn
四、代码及分析
程序代码:
datassegment
spacedb1000dup('
'
)
partten1db5dup('
),23dup(),'
$'
str1db0ah,0dh,'
179,'
*********************'
str2db0ah,0dh,'
****'
str3db0ah,0dh,'
**Weclome!
**'
str4db0ah,0dh,'
str5db0ah,0dh,'
str6db0ah,0dh,'
Pressanykeytocontinueorqtoexit?
sign1dw0;
判断是否有数字输入存储区,值为0代表输入的不是数字,为1代表输入的是数字
sign2dw0;
判断括号是否配对,值为0代表输入的是符号是匹配的,为1代表不匹配
numberdw20dup(0);
保存输入的数值
operatordb'
;
判断输入的运算符是否为空
db10dup(0);
保存该运算符对应的权值
errordb'
Wrong!
datasends
showmacrostr;
宏定义,显示字符串
leadx,str
movah,09h
int21h
endm
fqmacroascii,a,b;
宏定义,给运算符赋权值
cmpal,ascii
jnes&
a
movch,b
jmps7
huichemacro;
宏定义,回车换行
movah,02h
movdl,0dh
movdl,0ah
codessegment
assumecs:
codes,ds:
datas
start:
callclear
movax,0600h
callscren
;
movax,0001h
int10h
movax,datas
movds,ax
leadi,number
leasi,operator
showpartten1
showstr1
showstr2
showstr3
showstr4
showstr5
huiche
movax,0
movbx,0
movcx,0
movdx,0
start1:
input:
movah,01h
cmpal,'
='
第一种情况,第一次输入的是=,则直接=0.第一次输入的数分为2大种情况:
1.=2.数字或字符:
28h-39h
jelet0;
是等号,进一步判断输入括号是否配对第1大种情况排除后就剩下数字和字符了,再判断是数字还是字符
cmpal,28h;
第二种情况,第一次输入的与28h也就是'
('
比较
jbinput;
小于28h时重新输入
cmpal,39h;
大于39h是重新输入
jainput
cmpal,2fh;
判断是数字还是符号
jbelet1;
是符号转入响应操作
incwordptrsign1;
是数字将数字标志位加一
subal,30h;
将ascii码转为16进制
movah,0
xchgax,[di]
mulbx
movbx,10
add[di],ax
jmpinput
let0:
cmpwordptrsign2,0;
判断配对标志位
jelet1;
经过左括号和右括号抵消为0则跳转
jmplet8;
否则显示输入错误
let1:
cmpwordptrsign1,0;
判断数值指针是否已经下移一位
jelet2
adddi,2;
证明之前操作已输入了数字,则下移一字单元位置将其赋0
movwordptrsign1,0;
将数字标志位复0
let2:
calldyfq;
设定优先级
cmpch,5;
判断输入的符号是否是左括号
jnelet3;
不是则判断输入的是否是右括号
incwordptrsign2;
是左括号,括号标志位加1
let3:
cmpch,1;
判断输入的符号是否是右括号
jnelet4
decwordptrsign2;
是右括号,括号标志位减1
let4:
cmpbyteptr[si],'
判断运算符存储区是否为空
jelet6
cmpch,[si];
【si】的内容为前一个符号或其权值
jalet6
jnelet5
decsi
let5:
movcl,[si]
callmatch;
判断是什么运算符并进行相应的运算
jmplet4
let6:
cmpch,0;
判断是否是等号
jeoutput
cmpch,1
jeinput;
‘)’不保存,输入下一个数
incsi
mov[si],al;
保存符号
cmpch,5;
判断是否是左括号
jnelet7
movch,2;
改变(的权值
let7:
mov[si],ch;
紧跟着保存符号的权值
let8:
leadx,error
movah,9
jmpexit
matchprocnear;
子程序,进行相应的运算
pushax
cmpcl,2ah;
乘法运算
jnechu
subdi,2
xchgbx,[di]
imulbx
mov[di],ax
adddi,2
jmpfinish
chu:
除法运算
cmpcl,2fh
jnejia
cwd
idivbx
jia:
加法运算
cmpcl,2bh
jnejian
add[di],bx
jian:
减法运算
cmpcl,2dh
jnefinish
sub[di],bx
finish:
popax
ret
matchendp
dyfqproc;
子程序dyfq调用宏fq
fq28h,1,5;
调用宏fq为(赋权值
s1:
fq29h,2,1;
s2:
fq2ah,3,4;
*
s3:
fq2fh,4,4;
/
s4:
fq2bh,5,3;
+
s5:
fq2dh,6,3;
-
s6:
fq3dh,7,0;
=
s7:
dyfqendp
clearprocnear;
清屏
pushbx
pushcx
pushdx
movah,06h
movbh,07h
movdh,30
movdl,80
int10h
popbx
popcx
popdx
clearendp
output:
输出结果
cmpwordptr[di],0
jgek1
negwordptr[di];
求负数的绝对值
movdl,'
-'
movah,2
k1:
movbx,10000
movcx,5
movsi,0
k2:
movax,[di]
divbx
mov[di],dx
cmpal,0
jnek3
cmpsi,0
cmpcx,1
jek3
jmpk4
k3:
movdl,al
adddl,30h
movsi,1
k4:
;
实现将10000变为1000,100,10
movax,bx
movbx,ax
loopk2
showstr6
movah,1
q'
判断输入是否继续
jeexit
Q'
movwordptr[di+2],0
jmpstart1
exit:
movah,4ch
screnprocnear
movbh,2eh
movdx,184fh;
dos窗口,设置全屏,一共24行,每行78,184f就是十进制的24和78
screnendp
codesends
endstart
五、总结
本次课程设计的题目是计算器,通过在课堂上学习的基本知识和基本方法以及平时积累的知识和方法来实现对带符号数的加减乘除运算。
在设计的过程中,我们组的成员对课上讲解的内容进行了巩固,同时也了解了一些汇编语言必备的其他知识,让我们的实际动手能力得以增强。
其次,通过本次课程设计,使我们对模块化,结构化的程序设计方法掌握的更加透彻。
在这,就是对宏的定义,调用以及子程序的定义,调用的方法掌握的更加熟练。
本次课程设计是要实现对有符号数的加减乘除运算,程序开始定义了显示界面的诸多字符串,经过调用后的清屏宏指令后显示界面,接下来,定义了判断数字和判断运算符的存储区,通过这两个存储区来判断当前位置输入的是数字还是运算符,然后,定义了保存数字和保存运算符的存储区,提示错误的字符串,显示宏、赋权宏、回车换行符等,通过主程序对哥哥宏及其子程序的调用,判断出输入时数字还是运算符,若是运算符又是运算符中的哪类运算符,然后进行加减乘除运算,最后将运算结果存入到保存数字的存储区中,运用到显示输出模块最后的运算结果显示出来,从而实现了对带符号数的计算器功能。
通过这次课程设计,我们小组在汇编语言上守护了很多东西,在宏定义、宏调用和子程序定义,调用方面,我学到了比以前更多的知识,尤其是通过子程序调用宏这种嵌套模式可以简化许多复杂的程序,让程序更加简洁易懂,此外,这次课程设计让我认识到了上课认真听讲的必要性,老师在课堂上讲解的许多知识都很重要,在本次试验设计中充分体现了这一点,所以学好课堂老师讲解的的许多知识很有必要。
从今往后,我会加倍努力学习汇编方面的知识,使自己的能力得以提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 计算器 程序 实验 报告