设在内存单元SQTAB首址开始存放了0~15的平方数表。要求用直接查表法编一程序,求出A单元中给定数(≤15)的平方值送B单元保存。(5分)

设在内存单元SQTAB首址开始存放了0~15的平方数表。要求用直接查表法编一程序,求出A单元中给定数(≤15)的平方值送B单元保存。(5分)

分析:采用直接查表法。应首先定义以SQTAB为首址的0~15的平方值表,并按顺序存放。直接查表法的基本思想是,将给定单元A的内容作为地址位移量与表首址SQTAB相加,就指向了表中所求平方值的地址,再取出其内容送B单元保存即可。而在指令系统中介绍过的换码指令XLAT,正适合完成这种顺序查表功能。需注意的是使用XLAT指令前,必须先完成将表首址→BX,将给定单元A的内容作为偏移量送AL。下面给出所编程序供参考。DATASEGMENTSQTABDB0,1,4,9,16,25,36,49,64,81DB100,121,144,169,196,225;定义平方值表ADB12;定义被求数为12BDB?;定义结果存放单元DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTARTPROCFARPUSHDXXORAX,AXPUSHAX;设置返回堆栈MOVAX,DATAMOVDS,AX;装填数据段寄存器MOVBX,OFFSETSQTAB;BX←平方值表首址MOVAL,A;AL←被求数作偏移量XLAT;换码AL←[BX+AL]MOVB,AL;单元←查表所得平方值RETSTARTENDPCODEENDSENDSTART本修题改分数7分

Top