汇编实验4.docx
- 文档编号:30714498
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:18
- 大小:205.23KB
汇编实验4.docx
《汇编实验4.docx》由会员分享,可在线阅读,更多相关《汇编实验4.docx(18页珍藏版)》请在冰豆网上搜索。
汇编实验4
山东大学实验报告
2016年月日
姓名刘方铮,学号201411130001系年级计算机科学与技术系2014级
科目汇编语言题目统计学生成绩result、显示月份名direct和显示错误信息show_err
实验源程序清单
统计学生成绩,result.asm:
;**************************************************************
datareasegment;定义相关成绩和相应数据段
gradedw56,69,84,82,73,88,99,63,100,80
s5dw0
s6dw0
s7dw0
s8dw0
s9dw0
s10dw0
datareaends
;*****************************************************************
;******************************************************************
prognamsegment
mainprocfar
assumecs:
prognam,ds:
datarea
start:
pushds
subax,ax
pushax
movax,datarea
movds,ax
movs5,0
movs6,0
movs7,0
movs8,0
movs9,0
movs10,0
movcx,10
movbx,offsetgrade
compare:
movax,[bx]
cmpax,60;比较60小于跳转5
jlfive
cmpax,70;比较70小于跳转6
jlsix
cmpax,80;比较80小于跳转7
jlseven
cmpax,90;比较90小于跳转8
jleight
cmpax,100;比较100小于跳转9
jnenine
incs10
jmpshortchange_addr
nine:
incs9
jmpshortchange_addr
eight:
incs8
jmpshortchange_addr
seven:
incs7
jmpshortchange_addr
six:
incs6
jmpshortchange_addr
five:
incs5
change_addr:
addbx,2
loopcompare
ret
mainendp
;---------------------------------------------------------------------------
prognamends
;***************************************************************************
endstart
显示月份名direct
;***********************************************************
datasgsegmentpara'data'
threedb3
messdb'month?
',13,10,'$'
moninlabelbyte
maxdb3
actdb?
mon3dup(?
)
alfmondb'?
?
?
',13,10,'$'
montabdb'JAN','FEB','MAR','APR','MAY','JUN',
db'JUL','AUG','SEP','OCT','NOV','DEC'
datasgends
;***********************************************************
codesgsegmentpara'code'
assumecs:
codesg,ds:
datasg,es:
datasg
;-----------------------------------------------------------
mainprocfar
pushds
subax,ax
pushax
movax,datasg
movds,ax
moves,ax
;-----------------------------------------------------------
start:
leadx,mess
movah,09
int21h
leadx,monin
movah,0ah
int21h
movdl,13
movah,02
int21h
movdl,10
movah,02
int21h
cmpact,0
jeexit
;---------------------------------------------------------
movah,30h
cmpact,2
jetwo
moval,mon
jmpconv
two:
moval,mon+1
movah,mon
conv:
xorax,3030h
cmpah,0
jzloc
subah,ah
addal,10
;---------------------------------------------------------
loc:
leasi,montab
decal
multhree
addsi,ax
movcx,03
cld
leadi,alfmon
repmovsb
;---------------------------------------------------------
leadx,alfmon
movah,09
int21h
jmpstart
exit:
ret
mainendp
codesgends
endmain
显示错误信息show_err
;*******************************************************************************
dsegsegmentpara'data'
crEQU13
lfEQU10
eomEQU'$'
;
out_of_rangedb'Errorcodeisnotinvalidrange(1-83)'
dbcr,lf,eom
reserveddb'Errorcodeisreserved(36-79)',cr,lf,eom
er1db'Invalidfunctionnumber',cr,lf,eom
er2db'Filenotfound',cr,lf,eom
er3db'Pathnotfound',cr,lf,eom
er4db'Toomanyopenfiles',cr,lf,eom
er5db'Accessdenied',cr,lf,eom
er6db'Invalidhandle',cr,lf,eom
er7db'Memorycontrolblocksdestroyed',cr,lf,eom
er8db'Insufficientmemory',cr,lf,eom
er9db'Invalidmemoryblockaddress',cr,lf,eom
er10db'Invalidenvironment',cr,lf,eom
er11db'Invalidformat',cr,lf,eom
er12db'Invalidaccesscode',cr,lf,eom
er13db'Invaliddata',cr,lf,eom
er14db'Nosuchmessage',cr,lf,eom
er15db'Invaliddrivewasspecified',cr,lf,eom
er16db'Attemptedtoremovethecurrentdirectory''
dbcr,lf,eom
er17db'Notsamedevice',cr,lf,eom
er18db'Nomorefiles',cr,lf,eom
er19db'Diskiswrite_protected',cr,lf,eom
er20db'Unknownunit',cr,lf,eom
er21db'Drivenotready',cr,lf,eom
er22db'Unknowncommand',cr,lf,eom
er23db'Dataerror(CRC)',cr,lf,eom
er24db'Badrequeststructurelength',cr,lf,eom
er25db'Seekerror',cr,lf,eom
er26db'Unknownmediatype',cr,lf,eom
er27db'sectornotfound',cr,lf,eom
er28db'Printeroutofpaper',cr,lf,eom
er29db'Writefault',cr,lf,eom
er30db'Readfault',cr,lf,eom
er31db'Generalfailure',cr,lf,eom
er32db'Sharingviolation',cr,lf,eom
er33db'Lockviolation',cr,lf,eom
er34db'Invaliddiskchange',cr,lf,eom
er35db'FCBunavailable',cr,lf,eom
er80db'Fileexists',cr,lf,eom
er81db'Reserved',cr,lf,eom
er82db'Cannotmake',cr,lf,eom
er83db'FailonINT24',cr,lf,eom
ertab1dwer1,er2,er3,er4,er5,er6,er7,er8,er9,er10
er11,er12,er13,er14,er15,er16,er17,er18,er19,er20
er21,er22,er23,er24,er25,er26,er27,er28,er29,er30
er31,er32,er33,er34,er35
ertab2dwer80,er81,er82,er83
dsegends
;****************************************************************************
;****************************************************************************
prognamsegment
assumecs:
prognam,ds:
dseg
show_errprocfar
pushds
subbx,bx
pushbx
movsi,dseg
movds,si
pushax
cmpax,83
jgO_O_R
cmpax,0
jgIN_RANGE
O_O_R:
leadx,out_of_range
jmpshortDISP_MSG
IN_RANGE:
cmpax,35
jgTRY79
leabx,ertab1
decax
jmpFORM_ADDR
TRY79:
cmpax,79
jgLAST_4
leadx,reserved
jmpDISP_MSG
LAST_4:
leabx,ertab2
andax,3
FORM_ADDR:
shlax,1
addbx,ax
movdx,[bx]
DISP_MSG:
movah,09h
int21h
popax
ret
show_errendp
;
prognamends
;******************************************************************************
endshow_err
编译及运行结果
待定
问题及收获
第一个实验是将10个成绩统计存放在6个分数段中,将每个数据和段的整数比较小则跳转,这个实验是走的书上已有的程序,原理也通俗易懂,不过这次实验更加了解了地址数的作用,如何去看数据的存放
第二个实验是根据输入的数字显示月份名,这个实验我做的有点奇怪,完成后先输入了12显示12月自此之后输入1为11月2为12月3不显示03才显示3月01才显示1月11显示11月,换一个电脑运行也没有任何问题输入4就能输出4月
第三个实验是根据改变ax显示数据段存放的相应的错误信息,将其分为四部分小于1或大于83、1到35、80到83、36到79,键入后分析比较跳至相应部分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 实验