已知有三个8位无符号数x y z分别存放于NUMB NUMB+1和MMB+2单元中。要求编一程序实现A+3y+5z 并要

大学 符号,程序,正确答案 已帮助 人

已知有三个8位无符号数x,y,z分别存放于NUMB,NUMB+1和MMB+2单元中。要求编一程序实现A+3y+5z,并要求将运算结果存入RES单元和RES+1单元中。

请帮忙给出正确答案和分析,谢谢!

热搜:x理论和y理论的主要观点

答案解析

难度★★☆ 搜索
  • 正确答案:通过题目要求可以发现每一单项的计算(乘法)过程是相同的只是乘数与 被乘数的值不同而已。这样就可以将乘法操作用一个子程序来完成。乘数和被乘数在主程序中确定。 程序如下: MOV AX.0 MOV RES.AX LEA BX.NUMB MOV AL.2 CALL SUBS MOV AL.3 INC BX CALL SUBS MOV AL.5 INC BX CALL SUBS HLT SUBS PROC NEAR MUL [BX] ADD RES.AX MOV AX.0 RET 上面的程序在主程序部分使用了三次子程序指令而如果使用循环语句的话只用一条即可完成。 源程序: SSEG SEGMENT STACK’STACK’ STA DB 100 DUP(?) SSEG ENDS DATA SEGMENT NUMB DB 3 DUP(?) MUD DB 235 RES DWO DATA ENDS CODE SEGMENT ASSUME CS:CODEDS:DATASS:SSEG START:MOV AX.DATA MOV DSAX MOV AX.0 MOV CX.3 LEA BX.NUMB LEA DI.MUD LP: MOV AL[DI] CALL SUBS INC BX INC DI LOOP LP MOV AH.4CH INT 21H SUBS PROC NEAR MUL [BX] ADD RES.AX MOV AX.0 RET SUBS ENDP CODE ENDS END START 这个程序与前一个比较起来似乎并不简单但如果题目中所要求进行运算的项数比较多时这个程序的通用性和高效率就会显现出来了。
    通过题目要求可以发现,每一单项的计算(乘法)过程是相同的,只是乘数与被乘数的值不同而已。这样,就可以将乘法操作用一个子程序来完成。乘数和被乘数在主程序中确定。程序如下:MOVAX.0MOVRES.AXLEABX.NUMBMOVAL.2CALLSUBSMOVAL.3INCBXCALLSUBSMOVAL.5INCBXCALLSUBSHLTSUBSPROCNEARMUL[BX]ADDRES.AXMOVAX.0RET上面的程序在主程序部分使用了三次子程序指令,而如果使用循环语句的话,只用一条即可完成。源程序:SSEGSEGMENTSTACK’STACK’STADB100DUP(?)SSEGENDSDATASEGMENTNUMBDB3DUP(?)MUDDB2,3,5RESDWODATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:SSEGSTART:MOVAX.DATAMOVDS,AXMOVAX.0MOVCX.3LEABX.NUMBLEADI.MUDLP:MOVAL,[DI]CALLSUBSINCBXINCDILOOPLPMOVAH.4CHINT21HSUBSPROCNEARMUL[BX]ADDRES.AXMOVAX.0RETSUBSENDPCODEENDSENDSTART这个程序与前一个比较起来似乎并不简单,但如果题目中所要求进行运算的项数比较多时,这个程序的通用性和高效率就会显现出来了。