计算机三级PC技术上机指导.doc.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

xx年计算机三级PC技术上机指导

这种题型是根据考题要求,在BEGI和END区间自行编制程

序,然后进行汇编、连接,并运行程序,最后得到正确结果。下面

是一个编制程序的例子,题目要求是:

内存中连续存放着二十个字(WORD),对每个字逻辑左移,使其

最高位为1,其中值为零的不变。例如:

内存中有29C1H(0010100111000001B),0000H,134BH,...

结果为A704H(1010011100000100B),0000H,9A58H,...

局部程序已给出,其中原始数据由过程LOAD从文件

INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从

RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

;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)

秋天 + 关注
实名认证
内容提供者

三十年河东,三十年河西,莫欺少年穷。

1亿VIP精品文档

相关文档