- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
年计算机三级PC技术上机指导
编制程序题
这种题型是根据考题要求,在BEGIN和END区间自行编制程序,然后进行汇编、连接,并运行程序,最后得到正确结果。下面是一个编制程序的例子,题目要求是:
内存中连续存放着二十个字(WORD),对每个字逻辑左移,使其最高位为1,其中值为零的不变。例如:
内存中有29C1H(0010100111000001B),0000H,134BH,...
结果为A704H(1010011100000100B),0000H,9A58H,...
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
下面是程序清单,其中BEGIN和END之间的程序段由考生编写。
;PROG1.ASM
EXTRNLOAD:FAR,SAVE:FAR
NEQU20;需输入的字节数
DSEGSEGMENT;数据段
SOURCEDWNDUP(?);存放原始数据
RESULTDWNDUP(0);存放运算结果
NAME0DBINPUT1.DAT,0;输入文件名
NAME1DBOUTPUT1.DAT,0;输出文件名
DSEGENDS
SSEGSEGMENTSTACK;堆栈段
DB128DUP(?)
SSEGENDS
CSEGSEGMENT;代码段
ASSUMECS:CSEG,DS:DSEG,SS:SSEG
STARTPROCFAR
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DSEG
MOVDS,AX
LEADX,SOURCE;原始数据区首址送DX
LEASI,NAME0;输入文件名首址送SI
MOVCX,2*N;输入字节数送CX
CALLLOAD;从INPUT1.DAT中读取数据
;****BEGIN****
LEASI,SOURCE;原始数据首地址送SI
MOVDI,OFFSETRESULT;结果数据首地址送DI
MOVCX,N;字节数送CX
NEXT:MOVAX,[SI];取一个字数据
CMPAX,0;是0吗?
JESKIP;是,跳过这一个字
LOOP1:TESTAX,8000H;否,最高位是1吗?
JNESKIP;是,跳过这一个字
SHLAX,1;否,左移一位
JMPLOOP1;继续测试最高位是否为1
SKIP:MOV[DI],AX;保存变换结果于RESULT中
ADDSI,2;修改原始数据区指针
ADDDI,2;修改结果数据区指针
LOOPNEXT;继续检查下一个字数据
;****END****
LEADX,RESULT;结果数据区首址送DX
LEASI,NAME1;结果文件名首址送SI
MOVCX,N*2;结果字节数送CX
CALLSAVE;保存结果到OUTPUT1.DAT
RET
STARTENDP
CSEGENDS
ENDSTART
?
文档评论(0)