[简答题]
阅读以下说明和x86汇编语言代码,根据要求回答问题1至问题3。表6-3所示为 x86系统指令及寄存器说明表。
[说明]
在计算机控制中,有些数据补偿、计算及转换等参数的计算非常复杂,编程难,程序长且运算费时,但是用数表却比较容易实现。
设有256个字节的数据,已按从小到大的顺序存放在以BINTAB为首地址的数据区单元中,现要求查找其中值为126的数据,用对分查表法查询的汇编程序如下:
[汇编程序代码]
DATA SEGMENT
BINTAB
DBl8,25,32,46,56,78,…
;第1~100个数据
DB 90,95,99,100,106,126,…
;第101~200个数据
DB
189,195,197,202,206,216,… ;第201~256个数据
COUNT
EQU 256
FLAG DW
KEY EQU (1)
DATA
ENDS
STAK SEGMENT
STPN DB 20
DUP( )
STAK ENDS
CODE
SEGMENT
ASSUME CS,CODE, DS,DATA, ES:DATA,
SS:STAK
BINSEAT PROC FAR
START, MOV AX,
DATA
MOV DS, AX
MOV ES, AX
LEA
SI, BINTAB
MOV CX,
COUNT
MOV DX, 1
MOV AX, SI
ADD
AX, CX
MOV DI, AX
MOV AL, KEY
LOP0, MOV
BX, SI
ADD BX, DI
SHR BX, 1
CMP
AL, [BX]
JZ
FOUND
PUSH
[填空题]
阅读以下说明和C程序代码,将程序补充完整。
[说明]
下面C程序代码的功能是:对于输入的一个正整数n(100≤n<1000),先判断其是否是回文数(正读反读都一样的数)。若不是,则将n与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直到得到一个回文数为止。例如,278不是回文数,其反序数为872,相加后得到的1150还不是回文数,再将1150与其反序数511相加,得到的1661是回文数。
函数int isPalm(long
m)的功能是:将正整数m的各位数字取出存入数组中,然后判断其是否为回文数。若m是回文数则返回1,否则返回0。
[C程序代码]
#include<stdio.h>
#include<stdlib.h>
int isPalm(long m)
{
int i=0, k=0;
char str[32];
while(m>0) {
str[k++]= (1) +’0’;
m=m/10;
}
for(i=0; i<k/2;
i++)
if(str[i]!=str[ (2) ])return 0;
return 1;
}
int main(
)
{
long n, a, t;
printf("input a positive integer: "); scanf("%ld", &n);
if(n<100||n>=1000)return -1;
while( (3)
) {
printf("%id->", n);
for(a=0, t=n;
t>0; ){
a= (4) *10+t%10; t=t/10;
n= (5) ;
printf("%id/n", n);
system("pause"); return 0;