1、 课程编号: H61030005 课程名称: 汇编语言程序设计 考试形式: 闭卷 学院: 信息工程 专业: 计算机科学与技术 考试日期: 题号 一 二 三 四 五 六 七 八 九 十 总分 累分人 签名 题分 20 12 18 20 30 100 得分 考生注意事项:1、本试卷共7 页,请查瞧试卷中就是否有缺页或破损。如有立即举手报告以便更换。 2、考试结
2、束后,考生不得将试卷、答题纸与草稿纸带出考场。 一、单项选择题(每小题 2 分,共 20分) 1。一个有128个字得数据区,它得起始地址为12ABH:00ABH,请给出这个数据区第一个字单元得物理地址就是( A )。 A。12B5BH ; B。12B6BH ; C.12C59H; D.12BFEH。 2.在下列指令得中,不能实现把AX寄存器内容清零得指令就是( C )。 A. SUB AX,AX; B.XOR AX,AX; C.OR AX,0000H; D.AND AX,0000H。 3。条件转移指令JN
3、E得测试条件为 ( A ). A。ZF=0 ; B.CF=0 ; C.ZF=1 ; D。CF=1 。 4。8086CPU在基址加变址得寻址方式中,变址寄存器可以为(D )。 A。BX或CX ; B.CX或SI ; C.DX或SI ; D。SI或DI。 5.设(AX)=1000H, NEG AX NOT AX 【汇编语言程序设计】期末考试—试卷及参考答案 执行上述两条指令后,正确得结果就是( B )。 A.(AX)=1001H; B.(AX)
4、0FFFH; C。(AX)=1000H; D.(AX)=0111H。 6。串指令中得目得操作数地址一定就是由____A_ _提供。( ) A。ES:[DI] ; B。SS:[BP]; C.DS:[SI] ; D.CS:[IP]。 7.将DX得内容除以2,正确得指令就是( C ). A.DIV 2 ; B.DIV DX,2 ; C.SAR DX,1; D。SHL DX,1。 8、 用户为了解决自己得问题,用汇编语言所编写得程序,称为( B )。 A。目标程序;
5、 B。汇编语言源程序; C.可执行程序; D。汇编程序。 9.用一条指令仅实现将AX←BX+SI得方法就是( D ). A. XCHG AX,[BX][SI] ; B. MOV AX,[BX+SI]; C.LEA AX,BX[SI] ; D.LEA AX,[BX][SI]. 10.设SP初值为2000H,执行指令“PUSH AX”后,SP得值就是( C )。 A.1FFFH; B。1998H; C。1FFEH; D.2002H。 1、A 2、
6、 C 3、A 4、D 5、B 6、A 7、C 8、B 9、D 10、C 二、指出下列指令得出错原因,并改正。(每小题2分,共12分) 1. MOV BX,DL;操作数类型不匹配,改正为:MOV BL,DL 或MOV BX,DX 2. MOV CS,AX;代码段寄存器CS不能作目得操作数,改正为MOV DS,AX 3. ADD AX,DS;段寄存器DS得内容不能作为加法指令得操作数,改正为 MOV BX,DS ADD AX,BX 4. TEST BX,[CX];不能使用CX实现寄存器间接寻址,改正为 MOV SI,CX TEST BX,[SI] 5.
7、 SUB [BX],[BP+SI];两个操作数不能同为存储器操作数,且两个操作数得数据类型 不确定,改正为:MOV AX,[BX] SUB AX,[BP+SI] 或:MOV AL,[BX] SUB AL,[BP+SI] 6。SHL DX ;没有给出移位次数,改正为SHL DX,1或 SHL DX,CL 三、程序填空题(注意:每空只能填一条指令,并注释说明所填指令得作用!每空3分,共18分) 1. 在表TABLE处存放着N个无符号字节数,求表中前10个字节数得总与并保存在AX寄存器中。如果总与值超过AX寄存器得容量,则置AX寄存器内容不变。请在程序中得空格处填入
8、适当指令使其完整。 LEA BX,TABLE MOV CX,10 MOV SUM,AX ;将AX得原值保存在SUM单元中 MOV AL,00H MEXT:(1)ADD AL,[BX] ; 实现将表TABLE中得数据按字节累加到AL中 ADC AH,0 JNC DONE (2)MOV AX,SUM ; 总与值超过AX寄存器得容量,恢复AX得原值 JC EXIT DONE:INC BX (3)LOOP NEXT ; 将计数器CX减1,并判断就是否继续下一次循环 EX
9、IT:HLT 2. BUFFER为起始地址得存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在程序中得空格处填入适当得指令使其完整。 MOV CX,32H ;循环50次 LEA SI,BUFFER MOV DI,SI (1) ADD DI,99 ;DI指向最后一个字节数据得存储单元得偏移地址 NEXT:MOV AL,[SI] (2) XCHG AL,[DI];交换SI与DI所指向单元得内容 MOV [SI],AL (3
10、 INC SI ;使指针SI加1,指向下一个字节得数据 DEC DI LOOP NEXT HLT 四、程序分析题(每小题4分,共20分) 1. 设(AX)= X,X就是无符号数且0≤X〈 6000,分析下面程序段,回答问题; SHL AX,1 ;实现X乘2 MOV BX,AX SHL AX,1 SHL AX,1 ADD AX,BX (1) 该程序段得功能就是什么? 实现无符号数X乘10,结果存放在AX寄存器
11、中. ——2分 (2) 该程序段执行完后,(AX)= 10X ,(BX)= 2X 。-—2分 2. 现有一子程序段: SUB1 PROC TEST AL,80H JE PLUS TEST BL,80H JNE EXITO JMP XCHANGE PLUS: TEST BL,80H JE EXITO XCHANGE:XCHG AL,BL EXITO: RET SUB1 ENDP 试回答:(1)子程序得功能就是什么? 答:子程序得功能就是判别AL与BL中得数就是否为异号
12、数,当为异号时交换,否则不变. (2)若调用子程序前(AL)=9AH,(BL)=77H,则返回主程序时,(AL)=__77H____,(BL)=_9AH__。 请回答: (1) 该程序段占有得存储单元字节数就是多少?画出所分配得存储区得示意图、 答:8个字节, 0020H 12H DA1 00H 23H 00 0024H 11H DA2 21H 0025H 31H DA3 32H (2) 符号名DA4得值就是多少?符号名DA5得值就是多少? 答:DA4
13、2,DA5=1234H 3. 现有如下程序段: DATA SEGMENT ORG 0020H DA1 DW 12H,23H DA2 DB 11H,21H DA3 DB 31H,32H DA4 EQU $-DA3 DA5 EQU 1234H DATA ENDS 4. 阅读如下程序: ADRR DB XXH,XXH,……,XXH;定义得字节数组元素 NUM EQU $-ADRR RET_VLAUE DW ? … MOV CX,NUM MOV BX,—1 NEXT: INC
14、 BX CMP ADRR[BX],0 LOOPNZ NEXT JZ DONE MOV BX,OFFH DONE: MOV RET_VLAUE,BX HLT 请问:(1)该程序完成得功能就是什么? 功能:在以ADRR为起始地址得数组中,查找第一个就是0得数据. (2)程序执行后指出RET_VLAUE单元中得内容就是什么? 若找到,则将第一个就是0得数据在数组中得偏移量送入RET_VLAUE单元中;若无0数据,则将0FFH送入RET_VLAUE单元中. 5. 阅读如下程序段,回答所提出得问题,假定X1,X2,…,XN为无符号数。 ORG 10
15、0H BLOCK DW X1,X2,…,XN COUNT EQU ($-BLOCK)/2 RESULT DW COUNT,? LEA BX,BLOCK—2 MOV CX,RESULT XOR AX,AX GO_ON:ADD BX,2 CMP AX,[BX] JAE NEXT MOV AX,[BX] NEXT: LOOP GO_ON MOV RESULT+2,AX 程序段执行完,回答下述问题: RESULT+2字存储单元得内容= MAX(X1,X2,…,XN ) ; BX = 100H + 2×(COUNT-1)
16、 程序循环次数 = COUNT 。 五、编写程序(30分) 得分 评阅人 1。编写一程序,在letter为首地址得26个单元中依此存放字母‘A’、‘B’、……‘Z’。(本小题8分) data SEGMENT letter DB 26 DUP(?) count EQU $-letter data ENDS code SEGMENT ASS
17、UME cs:code,da:data start: mov ax,data mov ds,ax mov cx,count lea si,letter mov al,‘A’ next: mov [si],al inc al inc si loop next mov ah,4ch int 21h code ends
18、end start 2.以Buffer为首地址得存储区,存放有长度为N有符号字数组,编写一程序求出其中负数得平均值(所有负数得与>-32768),并存放在M_average单元中。(本小题10分) data SEGMENT Buffer DW XXXX,XXXX,……,XXXX;N个字 count EQU ($-Buffer)/2 M_average dw ? data ENDS code SEGMENT ASSUME cs:code,da:data cwd idiv bx mo
19、v M_average,ax ;存负数得平均值 mov ah,4ch int 21h data ends end start start: mov ax,data mov ds,ax mov cx,count lea si, Buffer xor ax,ax ;存负数得与 mov bx,ax ;存负数得个数 next: test word ptr [si],8000H je go_on add
20、ax,[si] inc bx go_on: add si,2 loop next 3.从键盘接收一串不多于99个字符得字符串,对其进行分类统计,显示其中数字字符个数、大写英文字母个数、小写英文字母个数、以及其她字符得个数。要求使用子程序结构;数字字符得ASCII码为30H……39H、大写英文字母得ASCII码为41H……5AH、小写英文字母得ASCII码为61H……7AH.(本小题12分) data SEGMENT MSG DB 0DH,0AH,‘输入一串字符:$’ MSG1 DB 0DH,0AH,‘大写字母个数:$’ MSG
21、2 DB 0DH,0AH,‘小写字母个数:$' MSG3 DB 0DH,0AH,‘数字符号个数:$’ MSG4 DB 0DH,0AH,‘其它符号个数:$’ BUFFER DB 99 DB 0 DB 99 DUP(?) BIG DB 0 ;大写字母个数 LITTLE DB 0 ;小写字母个数 DIG DB 0 ;数字符号个数 OTHER DB 0 ;其它符号个数 data ENDS code SEGMENT
22、 ASSUME cs:code,da:data start: mov ax,data mov ds,ax lea dx,MSG mov ah,9 ;9号功能调用显示提示信息 int 21h lea dx,BUFFER mov ah,10 ;10号功能调用从键盘接收一串字符 int 21h mov cl,BUFFER+1;实际从键盘接收字符个数 mov ch,0 lea si,BUFFER+2 again: cmp byte ptr [si],30H jb others cmp byte ptr [si],39H jbe di
23、gitals cmp byte ptr [si],41H jb others cmp byte ptr [si],5AH jbe bigs cmp byte ptr [si],61H jb others cmp byte ptr [si],7AH jbe littles others: inc OTHER jmp ok digitals:inc DIG jmp ok littles: inc LITTLE jmp ok bigs: inc BIG ok: inc si loop aga
24、in lea dx,MSG1 mov bh,BIG call dispdec lea dx, MSG2 mov bh,LITTLE call dispdec lea dx, MSG3 mov bh,DIG call dispdec lea dx, MSG4 mov bh, OTHER call dispdec mov ah,4ch int 21h ;DX待显示数据说明,BH待显示数据<100 dispdec PROC mov ah,9 int 21h mov al,bh xor ah,ah aam mov dl,ah mov dh,al add dl,30H mov ah,2 int 21H mov dl,dh add dl,30H mov ah,2 int 21H ret dispdec ENDP code ENDS end start
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818