一个汇编题《微机原理与接口技术》的考试题

一个汇编题《微机原理与接口技术》的考试题,第1张

一、 单项选择题

1.下列指令正确的是 [ B]

A.CMP [SI],100 B.CMP WORD PTR [SI],100

C.CMP [SI],100h D.CMP 100h,[SI]

2.下列指令正确的是 [D ]

A.MOV CX,AL B.MOV DS,200h

C.MOV DS,CS D.MOV DS,AX

3.下列指令正确的是 [A ]

A.POP WORD PTR [BX] B.POP BL

C.POP IP D.POP CS

4.下列指令正确的是 [C ]

A.IN DX,AL B.IN DX,AX

C.IN AX,DX D.IN BX,DX

5.DF=1,执行MOVSB指令后 [A ]

A.SI减1,DI减1 B.SI加1,DI加1,CX减1

C.SI减1,DI减1,CX减1 D.SI加1,DI加1,CX加1

6.Intel 8086 I/O寻址空间为 [C ]

A.1MB B.1KB

C.64KB D.32KB

二、填空题

1.二进制数10101001转换为10进制数为 169 D转换为16进制数为 A9 H

1.在移位指令中,用于指定移位位数的 *** 作数只用的寄存器是___CL_____。

2.内存0005CH处4个字节为D2,EF,00,F0,它是中断__17H______的入口地址存放处,它表示该中断处理程序的起始地址为_F000H___ :__EFD2H___。

解析:因为中断类型号和中断向量表中的对应物理地址由倍数4的关系,岁掘所以0005CH/4=17h,即得类型号。

3.一条指令为MOV BX,X1,其中X1的偏移地址为16 (十进制)。在DEBUG下,此指令会变为MOV BX,__[0010]______。

4.指令MOV AL, BYTE PTR [BX+SI]中,源 *** 作数的寻址方式是基祥野址变址寻址方式

5.设CF=0,AX=8000H,执行ROR AX,1后,AX=_4000H___,CF=_____0_________。乎宴核

6.可屏蔽中断是指中断请求是否响应会受到IF的控制。如果IF=_1_,表示允许中断

或开中断

7、请用一条指令实现如下 *** 作:

(1)将AX中划‘X’的位清0

15 5 4 0

┏┳┳┳┳┳┳┳┳┳┳━┳━┳┳┳┳┓

┃┃┃┃┃┃┃┃┃┃┃X┃X┃┃┃┃┃ 指令:__AND AX,FFCFH________________

┗┻┻┻┻┻┻┻┻┻┻━┻━┻┻┻┻┛

(2)寄存器的低四位取反的指令:___XOR AX,000FH____

8、设(CS)=25FFH,(DS)=2140H,(SS)=2510H,(BP)=02D0H,(SI)=0010H,(DI)=0206H,

则(1)指令MOV AX,[BP+SI+2]的源 *** 作数有效地址为__02E2H_,物理地址为_253E2H_

(2)指令MOV AX,[DI+100H]的源 *** 作数有效地址为_0306H__,物理地址为_21706H__.

二、判断题

[判断下述指令的正误。正确的打“√”,错误的打“×”并说明理由]

1.MOV MYDAT [BX] [SI],AX (√)

2.MOV SAVE_DS,DS (√)

3.DIV 12 (× )

4.MOV DS,0 (×)

5.MOV AX,[SI][DI] ( ×)

6、MOV BYTE PTR[BX],10H(√)

三、简答题

1.指出下列各条指令单独执行后相应寄存器的值。

DATAX SEGMENT PARA

X1 DD 12345678h

X2 EQU $-X1

X3 DW 45,0FEAH

X4 EQU $-X1

DATAX ENDS

MOV AX,X2

MOV BX,X4

答:执行后(AX)=0004H

(BX)=0008H (已经更正)

2.中断共有哪几种?

(详见课本)

3.有符号数据定义如下:

X1 DW ?

X2 DB ?

X3 DW ?

编写程序块实现X3=(X2*10-X1/2)/X2。

解:所需程序段如下

MOV AX,X1

SAR AX,1计算X1/2

CWD将AX扩展到DX

MOV BX,DX

MOV CX,AX

………………………..

MOV AX,X1

MOV BX,10

IMUL BX 计算X1*10

SUB AX,CX

SBB DX,BX 计算(X2*10-X1/2)

IDIV X2

MOV X3,AX

5. 将数据段中ARRAY开始的20个字节的存储区初始化为20H

将20个字节的存储区初始化为20H

data segment para public

ARRAY db 20 dup(?)

data ends

code segment

assume cs:code,ds:data,es:data

push ds

mov ax,0

push ax

mov ax,data

mov ds,ax

mov es,ax

...............................

mov di,offset ARRAY

mov al,20h

mov cx,20

rep stos st1

code ends

end

================================================================

1在程序执行的过程中,已知(CS)=6C3AH,(SS)=6C62H,(IP)=42H,(SP)=36H;则下一条要执行的指令地址是:( 6C3E2)H,栈顶单元的物理地址是:(6C656 )H

此程序中某条指令 MOV 0100H[BP],AX中,已知此时(BP)=2000H,则AX被存到了(

6E720)H单元。

2 给出完成下列功能的DEBUG命令:

(A) 显示数据段从偏移地址为 1A5H起始的一段存储区单元内容 D DS:01A5

(B) 显示所有寄存器的内容 R

3 已知(CH)=89H,VALUE单元存放的数据为E3H;写出下列指令的执行结果。

(A)OR CH,VALUE (CH)= EB H

(B)AND CH,VALUE (CH)= 81 H

(C)XOR CH,VALUE (CH)= 6A H

(D)XOR CH,00000000B (CH)= 89H

(E)TEST CH,VALUE (CH)= 89H

4 假设下列数据在存储区中的地址都是N单元,分别画出它们的存放示意图:

(A) 1234H (B) 01C3B5H

5 判断下列指令是否正确,错误的话改正错误

(A) MOV AL,BX (F )

(B)MOV AL,CL ( T )

(B) INC [BX] ( F )注:因为指令里没有说明 *** 作数的长度问题,可用PTR运算符校正:INC BYTE PTR [BX]或INC WORD PTR [BX]

(C) MOV 5,AL( F )

(D) MOV [BX],[SI]( F )

(E) MOV BL,F5H ( T )

(F) CMP BL,SI ( F )

(G) MOV [100H],3 ( F )

(H) POP AL ( F )

(I) MOV AX,[BX][BP] ( F )

(J) MOV [SI],AL ( T )

(K) OUT [DX],AX ( F )

6 简答

(A) 解释下列指令的功能。

MOV AX,OFFSET ARRAY

把变量ARRAY的偏移地址值送给AX寄存器

DSEG SEGMENT

DB01H

DSEG ENDS

定义了名字为DESG 一个段,并在此段中第一个单元定义的一个字节变量,值为01H

(B) 请定义一个名字为COUNT 的子程序。

COUNT PROC

RET

COUNT ENDP

(C) 写出在DEBUG 环境下 下列程序段中各条指令的执行结果:

MOV CX,3B ((CX)= 3BH)

ADD CX,1C ((CX)= 57H )

SHL CX,1((CX)= AEH )

SUB CX,36((CX)= 78H )

SHR CX,1 ((CX)= 3CH)

ROR CX,1 ((CX)= 1EH)

(D) 概述中断源的分类?

7 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用16进制数表示其运算结果,同时说明CF、OF标志位的值

(A)(-85) + (76)= F7 H CF= 0 OF= 0

(B)85 – 76= 09HH CF= 1 OF= 0

(C)85-(-76)= A1H CF= 1OF=1

注:此处的计算方法是先计算参与运算的两个数的补码形式在进行普通的加减法运算;例:

(C)[85]补码=55h,[-76]补码=b4h,所以55h-b4h=a1h,并且cf=1,of=1

8 阅读程序并填空(答案不唯一)

如果 X>50,转到TOO_HIGH;计算 X-Y,如果溢出转到 OVERFLOW,否则 |X-Y| → RESULT

MOV AX, X

CMP AX, 50

JGTOO_HIGH

SUB AX, Y

JOOVERFLOW

JNSNONNEG

NEG AX

NONNEG:

MOV RESULT, AX

TOO_HIGH:

……OVERFLOW:

这是汇编程序,原理图照课本上画就行~ CODE SEGMENT ASSUME CS: CODE NEW_INT: 接收字符的中断处理程序 STI CPU开中断 MOV DX , 3F8H 接收字困戚符 IN AL , DX MOV DL , AL 显示接收字符 MOV AH , 2 INT 21H CMP DL , 0DH 判断是唤冲否为回车 JNZ L2 不是,转L2处 MOV DL , 0AH 若是,加显示一个换行符 MOV AH , 2 INT 21H L2: MOV AL , 20H 发中断结束命令(EOI) OUT 20H , AL IRET START: 主程序部分 MOV AH , 35H MOV AL , 0CH INT 21H 读取原0CH号中断服务程序的地址 PUSH BX PUSH ES 以上地址入栈保存(以便在程序退出时再恢复中断矢量表中的内容) MOV AX , CS MOV DS , AX MOV DX , OFFSET NEW_INT MOV AH , 25H MOV AL , 0CH INT 21H 修改中断矢量表,将NET_INT位置登记为0CH号中断服务程序的地址 以下初始化8250 MOV DX , 3FBH 指向线路控制寄存器 MOV AL , 80H 位7置1 OUT DX , AL 发送此字节 MOV DX , 3F9H 指向波特率除数的高字节 MOV AL , 0 1200 BPS对应的高字节 OUT DX , AL 发送此字节 DEC DX 指向波特率除数的低字节 MOV AL , 60H 1200 BPS对应的低字节 OUT DX , AL 发送此字节 MOV AL , 1BH 数据长度为8位 , 1个奇偶校验位 , 偶校验 , 1个停止位 MOV DX , 3FBH 指向线路控制寄存器 OUT DX , AL 发送此字节 MOV DX , 3FCH 设置MODEM控制寄存器 MOV AL , 0BH 允许8250发中断 OUT DX , AL MOV DX , 3F9H 指向中断允许寄存器 MOV AL , 1 允许数据接收准备好中断 OUT DX , AL 发送此字节 CLI 关中断,以便对中断控制器8259A进行 *** 作 IN AL , 21H 读取中断屏蔽寄存器的内容 AND AL , 0EFH 将COM1中断(即IRQ4引脚)的对应位置0,允许中断。 OUT 21H , AL 写入中和尺歼断控制器8259A中 STI 开中断 L1: 主程序循环,等待收到字符的中断发生。 MOV AH , 0 INT 16H 读取键盘字符 CMP AL , 03 比较是否为CTRL-C键 JNZ L1 若不是,继续循环 EXIT: 退出处理 MOV AH , 25H MOV AL , 0CH POP DS POP DX INT 21H 恢复中断矢量表中0CH号中断服务程序的原地址。 MOV AH , 4CH INT 21H 返回DOS CODE ENDS END START

麻烦采纳,谢谢!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12500610.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存