[问答题] 请编制程序,其功能是:内存中连续存放着20个十六位二进制数,对每个数逻辑右移,使其最低位为"1"(值为零的字不变)。例如:内存中有a704h(1010011100000 | 乐文库-ag九游会登录j9入口

[问答题] 请编制程序,其功能是:内存中连续存放着20个十六位二进制数,对每个数逻辑右移,使其最低位为”1″(值为零的字不变)。例如:内存中有a704h(1010011100000100b),0000h,9a58h…结果为 29c1h(0010100111000001b),0000h,134bh…部分程序已给出,其中原始数据由过程load从文件input1.dat中读入source开始的内存单元中,运算结果要求从result开始存放,由过程save保存到文件output1.dat中。请填空begin和end之间已给出的源程序使其完整(空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除begin和end之间原有的代码并白行编程来完成所要求的功能。对程序必须进行汇编,并与io.obj链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。试题程序:

正确答案:(1)0(2)test(3)nz(4)shr(5)loop next程序的堆栈段定义了一个128字节的堆栈区。堆栈段下面是数据段。数据段中定义了两个字型变量:原始数据区source、结果数据区result;两个字节型变量:原始数据文件名name0、结果数据文件名name1。数据段下面是代码段,告诉汇编程序,代码段、数据段和堆栈段分别属于段寄存器cs、ds、ss。先将原始数据偏移地址装入到si中,结果数据偏移地址装入到di中,cx赋初值为n,用于控制循环处理的次数。next段,将si中内容送ax中,再将ax

参考解析:此程序要求对内存中的20个十六位二进制数的每一个数逻辑右移,直到最低位为1为止。考查了shr,test,loop等指令的用法。

本文来自网络,不代表乐文库立场,如若转载,请注明出处:https://www.lewenku.com/b5fe2228e9.html

网站地图