计算机原理课程设计文档格式.docx
- 文档编号:21809348
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:17
- 大小:137.10KB
计算机原理课程设计文档格式.docx
《计算机原理课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《计算机原理课程设计文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
0000000000000014
5、运行结果
图3乘法运算运行结果
6、源代码及注释
datasegment
info1db'
Inputthefirstnumber:
'
0dh,0ah,'
$'
info2db0dh,0ah,'
Inputthesecondnumber:
info3db0dh,0ah,'
Theresultis:
info4db0dh,0ah,'
Error'
'
onedb11dup(?
)
twodb11dup(?
xdb4dup(?
ydb4dup(?
pdw4dup(?
dataends
sstacksegmentstack'
stack'
db100hdup(?
sstackends
codesegment
mainprocfar
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,offsetinfo1;
显示提示信息info1
movah,09h
int21h
movdx,offsetone;
输入被乘数
movbx,dx
mov[bx],byteptr9
movah,0ah
int21h
callcheck;
检查输入字符的长度
movdx,offsetx
movsi,dx;
定义指针si指向变量x,作为子程序change的入口参数
movdx,offsetone
callchange;
将输入的被乘数转化为十六进制数,并赋值给变量x
movdx,offsetinfo2;
movdx,offsettwo;
输入乘数
movah,0ah
movdx,offsety
定义指针si指向变量y,作为子程序change的入口参数
将输入的被乘数转化为十六进制数,并赋值给变量y
movah,x+2
moval,x+3;
x1
movbh,y+2
movbl,y+3;
y1
mulbx;
x1*y1
movp+2,dx
movp,ax
movah,x
moval,x+1;
x2
x2*y1
addp+2,ax
adcp+4,dx
movbh,y
movbl,y+1;
y2
x1*y2
adcp+6,0
x2*y2
addp+4,ax
adcp+6,dx
movdx,offsetinfo3;
显示提示信息info3
movah,09
int21h
movbx,offsetp
calldispl;
显示计算结果
movah,4ch
mainendp
changeproc;
以2个字符一组,将其从ASCII码转化为相应的十六进制数
addbx,2
movcx,0404h
loop1:
moval,[bx]
subal,30h
cmpal,0ah
jbL1
subal,07h
cmpal,10h
subal,20h
movdx,offsetinfo4
L1:
shlal,cl
pushax
moval,[bx+1]
jbL2
L2:
movdl,al
popax
addal,dl
movds:
[si],al
incsi
decch
jnzloop1
ret
changeendp
displproc;
以2位十六进制数一组,先显示高位数,后显示低位数
movch,8
loop2:
moval,[bx+7]
andal,0f0h
movcl,4
shral,cl
addal,30h
cmpal,3ah
jbds1
addal,7
ds1:
movah,2
andax,0fh
jbds2
ds2:
decbx
jnzloop2
displendp
checkproc;
检查输入的字符个数是否为8个,不足时在前面补0
movch,[bx+1]
subal,ch
movcl,al
jech4
ch1:
incbx
subch,1
jnech1
movch,cl
ch2:
mov[bx],byteptr30h
jnech2
addbx,9
ch3:
mov[bx],al
jnech3
ch4:
checkendp
codeends
endstart
题目二递归调用子程序设计
1、设计分析
有n个人坐在一起,第n个人比第n-1个人大h岁。
第n-1个人比第n-2个人大h岁。
以此类推,第2个人比第1个人大h岁。
第1个人m岁。
请问第n个人多大。
用递归调用的方法设计程序完成题目。
(2)设计要求:
1)从键盘输入人数、第一个人的年龄和年龄差距
2)结果显示于屏幕上
(3)设计过程:
1)定义数据段用于存储输出提示字符。
2)从键盘输入人数n存进寄存器bl,第一个人的年龄m存进寄存器cl,年龄出差距h存进寄存器ch。
3)递归调用age,算出第n个人的年龄,并把结果存在寄存器bx里。
4)将结果(第n个人的年龄)向屏幕输出。
2、算法:
age(n)=age(n-1)+h
age(n-1)=age(n-2)+h
age(n-2)=age(n-3)+h
…
age
(2)=age
(1)+h
age
(1)=m
通用公式:
age(n)=age(n-1)+h当n>
1时
age
(1)=m当n=1时
3、程序流程图:
图4递归调用子程序的程序流程图
4、测试数据:
人数
第一个人的年龄
年龄差距
第n个人的年龄
05
10
02
018
028
050
5、运行结果:
图5递归调用子程序的运行结果
info1db'
Inputthenumberofpeople(1~99):
info2db0dh,0ah,'
Thelastpeopleageis:
info3db0dh,0ah,'
Inputfirstpeopleage:
info4db0dh,0ah,'
agechange:
info5db0dh,0ah,'
InputError'
crdb0dh,0ah,'
keybufdb4dup(?
sstack'
st1db100dup(?
data,ss:
sstack
Input1:
movdx,offsetinfo1;
显示提示信息info1,提示输入人数
movdx,offsetkeybuf;
输入人数
mov[bx],byteptr3
pushdx
leadx,cr;
回车换行
popdx
callchange;
将输入的人数转化为对应的十进制数
subch,0ffh;
若输入的非十进制数,则重新输入人数
jeInput1
Input2:
movdx,offsetinfo3;
显示提示信息info3,提示输入第一个人年龄
输入第一个人年龄
mov[bx],byteptr3
pushdx
movah,09h
将输入的第一个人的年龄转化为对应的十进制数
subch,0ffh;
若输入的非十进制数,则重新输入第一个人的年龄
jeInput2
Input3:
movdx,offsetinfo4;
显示提示信息info4,提示输入年龄差距
输入年龄差距
leadx,cr;
callchange;
将输入的年龄差距转化为对应的十进制数
subch,0ffh;
若输入的非十进制数,则重新输入年龄差距
jeInput3
popcx;
agechange
popbx;
firstpeople'
sage
popax;
numberofpeople
movdx,0
callage;
递归调用子程序age
movdx,offsetinfo2;
显示提示信息info2,提示输出结果
calldisp
changeproc;
将输入的字符转化为相应的十进制数
leadx,info5
movch,0ffh
jmpL3
moval,cl
movbl,0ah
mulbl
L3:
ret
ageproc;
通过递归调用可计算出最后一个人的年龄
cmpal,1
jnzchn
movdl,bl
chn:
decal
callage
adddl,cl
ageendp
dispproc;
将计算结果以十进制数显示
movcl,08h
xorax,ax
movax,bx
movdl,100
divdl
addal,30h;
显示百位数
shrax,cl
movdl,10
显示十位数
显示个位数
dispendp
endstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 原理 课程设计