PC三级上机试题及答案Word下载.docx
- 文档编号:16637857
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:78
- 大小:41.52KB
PC三级上机试题及答案Word下载.docx
《PC三级上机试题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《PC三级上机试题及答案Word下载.docx(78页珍藏版)》请在冰豆网上搜索。
结果数据文件名
NDATADBNDUP(0);
正数数组存放缓冲区
PDATADBNDUP(0);
负数数组存放缓冲区
DATAENDS
代码段;
CODESEGMENT;
段定义伪操作命令
ASSUMECS:
CODE,DS:
DATA,SS:
STAC;
段寻址伪操作指令,CS代码段,DS数据段,SS堆栈段
初始化;
STARTPROCFAR;
过程定义伪指令,类型属性FAR
PUSHDS;
保护PSP段地址
XORAX,AX;
置AX为0
PUSHAX;
保护PSP偏移地址
MOVAX,DATA
MOVDS,AX;
设置DS
MOVES,AX;
置附加段寄存器
LEADX,SOURCE;
数据区起始地址
LEASI,NAME0;
MOVCX,N;
字节数
CALLLOAD;
从'
中读取数据
开始;
LEASI,SOURCE;
将原始数据偏移地址装入到SI中
MOVDI,OFFSETPDATA;
PDATA为正数数组存放缓冲区首址
MOVBX,OFFSETNDATA;
NDATA为负数数组存放缓冲区首址
XORDX,DX;
置DX为0
MOVCX,N
CLD
MAIN1:
LODSB;
将[SI]所指向的地址单元(SOURCE)中内容装入到AL中
TESTAL,80H;
判断AL的正负性,逻辑与操作
JZMAIN2;
若逻辑与的结果为全0,则ZF=1,说明为正数,跳转
INCDH;
若逻辑与的结果不为全0,则ZF=0,说明为负数,存放负数个数的DH加1
MOV[BX],AL;
将AL的内容存入负数数组缓冲区BX
INCBX;
BX加1,指向下一单元
JMPMAIN3
MAIN2:
INCDL;
为正数,存放正数个数的DL加1
MOV[DI],AL;
将AL的内容存入正数数组缓冲区DI
INCDI;
DI加1,指向下一单元
MAIN3:
LOOPMAIN1;
继续判断下一个数AL的正负性
LEASI,PDATA;
负数数组存放缓冲区首址
LEADI,RESULT;
结果数据区首址
MOV[DI],DL;
正数个数存入
结果数据区偏移地址加1
XORCX,CX
MOVCL,DL;
将DL的个数送CL,用于控制循环次数
MAIN4:
MOVAL,[SI];
依次将DL个正数存入到DI当前所指向的地址单元DI中
MOV[DI],AL
INCDI
INCSI
LOOPMAIN4
MOV[DI],DH
MOVCL,DH
MOVBX,OFFSETNDATA
MAIN5:
MOVAL,[BX];
依次将负数存放到DI中
INCBX
LOOPMAIN5
****END****
LEADX,RESULT;
LEASI,NAME1;
结果文件名起始地址
MOVCX,N+2;
CALLSAVE;
保存结果到'
文件
RET
STARTENDP
CODEENDS
ENDSTART
【参考答案】
(1)MOV
(2)80H
(3)JMPMAIN3
(4)LOOP
(5)[SI]
(6)MAIN4
(7)INCBX
内存中连续存放着16个二进制字节数,在原16个数的第4和第5个数之间插入00H,在原16个数的第8和第9个数之间插入55H,在原16个数的第12和第13个数之间插入AAH,在原16个数的最后加入FFH。
将按上述方法插入4个字节数后得到的20个字节数存入内存中。
10H,20H,30H,40H,50H,...,8FH(共16个字节)
10H,20H,30H,40H,00H,50H,...,8FH,FFH(共20个字节)
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。
运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已经给出的源程序使其完整,需填空处已经用横线标出,每个空白一般只需一条指令,也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。
NEQU16
STACSEGMENTSTACK
)
DATASEGMENT
SOURCEDBNDUP(?
INDATADB0FFH,0AAH,55H,00H;
字节型变量
RESULTDBN+4DUP(0);
NAME0DB'
NAME1DB'
CODESEGMENT;
CODE,DS:
DATA,SS:
STARTPROCFAR;
PUSHDS;
XORAX,AX;
清零AX
PUSHAX
MOVAX,DATA
MOVDS,AX
LEADX,SOURCE;
LEASI,NAME0;
MOVCX,N;
CALLLOAD;
开始;
MOVSI,0;
原始数据偏移地址SI赋初值为0
MOVDI,0;
结果数据偏移地址DI赋初值为0
MOVCX,4;
控制循环次数,每4个数之间插入1个数据
MOVBX,4;
控制循环次数,一共插入4个字节数
CHAN:
MOVAH,SOURCE[SI];
原始数据依次存入结果数据区
MOVRESULT[DI],AH
INCSI;
原始数据偏移地址加1继续取下一个数
INCDI;
DECCX;
控制循环次数,减1
JZINSER1;
为0,说明完成4个数据传送,转INSER1
JMPCHAN;
否则,返回CHAN,继续装入数据
INSER1:
PUSHSI;
MOVSI,BX;
4个字节数
MOVAX,WORDPTRINDATA[SI-1];
取字节数插入结果数据区,SI-1表示每次取完1个数后SI减1
DECBX;
BX减1
JZEXIT;
为0,表示4个字节全部插入数据区,则退出循环程序
MOVCX,04H;
否则,重置循环次数
POPSI;
弹出
INCDI;
JMPCHAN;
转向CHAN,继续移入下一组4个数
EXIT:
POPSI
LEADX,RESULT;
结果数据区首址
LEASI,NAME1;
结果文件名
MOVCX,N+4;
结果字节数
CALLSAVE;
保存结果到文件
(1)MOVSI,0
(2)MOVAH,SOURCE[SI]
(3)INCSI
(4)AH
(5)EXIT
(6)POPSI
(7)CHAN
以SOURCE开始的内存区域存放着N个字节的压缩BCD码,将每个压缩BCD码转换成两个ASCII值,并在每个ASCII值的最高位增加偶校验位,结果存放在RESULT指示的内存区域。
原压缩BCD码:
26H,75H,91H,33H...
B2H,36H,B7H...
请填空BEGIN和END之间已经给出的一段原程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。
NEQU10
DB128DUP(?
SOURCEDBNDUP(0)
RESULTDB2*NDUP(0)
0
CODESEGMENT
STAC
STARTPROCFAR
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX;
置附加段寄存器
LEADX,SOURCE;
数据区起始地址
LEASI,NAME0;
原始数据文件名
MOVCX,N;
字节数
CALLLOAD;
从'
****BEGIN****
LEASI,SOURCE
MOVDI,OFFSETRESULT
SERCH1:
MOV____
(1)____
MOVAH,AL
ANDAH,0FH
ANDAL,0F0H
PUSHCX
MOVCL,4
____
(2)____
____(3)____
ADDAL,30H
____(4)____
ORAL,80H
SERCH2:
MOV[DI],AL
____(5)____
JPSERCH3
ORAH,80H
SERCH3:
MOV[DI],AH
____(6)____SERCH1
结果文件名起始地址
MOVCX,2*N;
CALLSAVE;
保存结果到'
文件中
【参考答案】
(1)AL,[SI]
(2)SHRAL,CL
(3)POPCX
(4)JPSERCH2
(5)ADDAH,30H
(6)LOOP
内存中连续存放着20个十六位二进制无符号数序列,请将它们排成升序(从小到大)。
7001H,7004H,7002H,...(假设后17个字均大于7004H)
7001H,7002H,7004H,...(后跟17个字,按从小到大的顺序排列)
NEQU20
SOURCEDWNDUP(?
)
RESULTDWNDUP(0)
XORAX,AX
MOVCX,N*2;
字数
LEASI,SOURCE
LEADI,RESULT
NEXT0:
MOVAX,[SI]
MOV[DI],AX
ADDSI,_____
(1)_____
_____
(2)_____
LOOP_____(3)_____
MOVBX,N-1
MAL1:
LEASI,RESULT
MOVCX,_____(4)_____
NEXT:
LOD_____(5)_____
CMP[SI],AX
JAECONT
XCHG[SI],____(6)____
MOV[SI-2],AX
CONT:
LOOP____(7)____
_____(8)_____
_____(9)_____MAL1
LEADX,RESULT;
LEASI,NAME1;
结果文件名
结果字数
保存结果到文件
(1)2
(2)ADDDI,2
(3)NEXT0
(4)BX
(5)SW
(6)AX
(7)NEXT
(8)DECBX
(9)JNZ
内存中连续存放着10个十六位二进制数。
分别对每个数的高位字节和低位字节进行逻辑与运算及逻辑或运算。
运算结果以字的形式按序连续存放(低位字节存入逻辑与运算的结果,高位字节存入逻辑或运算的结果)。
AA55H,55AAH,FFAAH
FF00H,FF00H,FFAAH
请填空BEGIN和END之间已经给出的源程序使其完整,空白处已经用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。
NEQU3
RESULTDWNDUP(0)
STARTPROCFAR
MOVDI,OFFSETRESULT
MOVBX,00
PRO:
MOVAX,____
(1)____
MOVDX,AX
AND____
(2)____,DH
____(3)____AH,AL
MOV____(4)____,DL
ADDBX,2
____(5)____
ADDDI,2
____(6)____
JNZPRO
MOVCX,N*2;
(1)SOURCE[BX]
(2)DL
(3)OR
(4)AL
(5)MOV[DI],AX
(6)DECCX
编制一个程序,其实现的功能为:
计算10个带符号字节数据的绝对值之和(和为字型),并且找出绝对值最小的数及其所在的偏移地址,将结果依次存入指定的内存区中,结果以0FH结束。
23H,14H,00H,08H,FEH,87H,02H,01H,FFH,01H
BFH,00H,00H,02H,00H,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PC 三级 上机 试题 答案