文档库 最新最全的文档下载
当前位置:文档库 › 微机原理与接口技术第三章-练习题

微机原理与接口技术第三章-练习题

微机原理与接口技术第三章-练习题
微机原理与接口技术第三章-练习题

第三章练习题

一、问答题

1、DB1 DB 5 DUP[ 3 DUP(2),2 DUP(3)]

MOV AL,DB1+4

MOV BX,WORD PTR DB1[3]

上面2条指令执行后,(AL)=?(BX)=?

2、下面程序段执行后,寄存器DS,SI的内容分别是多少?

ADR DW 1234H,5678H,0ABCDH

LDS SI,ADR+1

MOV BX,WORD PTR DB1[3]

3、下面程序段执行后,寄存器AX,BL的内容是什么?

ARY_W DW 10H DUP(1234H)

ARY_B EQU BYTE PTR ARY_W

MOV AX,ARY_W+2

MOV BL,ARY_B+2

4、有下列数据段:

DATA SEGMENT

ORG 30H

CON EQU 10H

S1 DB ‘IBM PC’

DB 0AH,0DH

CONT EQU $-S1

S2 DW ‘IB’,‘M’,‘PC’,0A0DH

DATA ENDS

上述数据段中S1,S2的偏移量分别是多少?CONT的值和S2+5字节单元的内容是多少?

5、设(DX)=80,CF=1

MOV AX,0AA50H

XOR AH,0FFH

OR DH,55H

SBB AX,DX

上述指令序列执行后,(AX)=?,(DX)=?

6、设AX,BX,CX,中均有数据0AAH,下面3条指令执行后,AX,BX,CX中的内容分别是多少? AND AX,-2

OR BX,-2

XOR CX,-2

7、VA_VAR DW 45678

MOV AX,DA_VAR

MOV DX,DX

MOV BX,10

LOP: XOR DX,DX

DIV BX

PUSH AX

CMP DX,0

JNE LOP

执行完上述程序段后,向堆栈压了几个数据?按压入的先后顺序指出这些数据。如果PUSH AX指令换成PUSH DX,那么向堆栈压入了几个数据?按压入的先后顺序指出这些数据。

8、DATA1 EQU BYTE PTR DATA2

DATA2 DW 0A987H,3456H

SAR DATA+1,1

MOV AX,DATA2+1

SAL DATA2+1,1

MOV BX,DATA2+1

上述指令序列执行后,(AX)=?,(BX)=?,CF=?,以DATA2为首址的两个字单元内容分别是多少?

9、MOV AL,0FH

XOR AL,0FFH

MOV CL,7

SHR AL,CL

上述几条指令执行后,(AL)=?如将SHR指令换成ROR或RCR,那么AL中的内容分别是多少?10、以W1为首址的各字节单元中分别存有数字0~9。下面程序段运行后,以W2为首址的各字节单元中的内容分别是什么?

W1 DB ×, ×, ×, ……

W2 DB $-W1 DUP (0)

MOV CX,LENGTH W2

MOV SI,OFFSET W1

MOV DI,OFFSET W2

CLD

LOP: LODSB ;MOV AL,[SI]

;INC SI

ADD AL,’A’

STOSB ;MOV [DI],AL

;INC DI

LOOP LOP

11、下面程序段是使用DOS功能子程序,实现从键盘输入10个数,然后按相反的次序在屏幕上显示出来。请在空白处填上适当指令语句,每一空白只填一条指令语句。

MOV CX,10

LOP1: MOV AH,1

INT 21H

LOOP LOP1

MOV CX,10

LOP2:

MOV AH,2

INT 21H

LOOP LOP2

12、设已定义数据段:

DATA SEGMENT

VAR1 DB ?,?

VAR2 DB ?,?

ADR DW VAR1,VAR2

DATA ENDS

若要使ADR+2单元中存放的内容为0022H,上述空白处应填写什么语句?

13、仔细阅读下面程序,试给出程序运行结束后,BUF2中各字节存储单元的内容。 DATA SEGMENT

BUF1 DW 0102H,0304H,0506H,0708H

COUNT EQU $-BUF1

BUF2 DW 5 DUP(0)

DATA ENDS

COSEG SEGMENT

ASSUME CS:COSEG,DS:DATA

BEGIN: MOV AX,DATA

MOV DS,AX

MOV BX,0

MOV SI,0

MOV DL,2

LOP1: MOV CX,COUNT/2

LOP2: MOV AL,BYTE PTR BUF1[SI]

MOV BL,AL

ADD AL,BL

MOV BYTE PTR BUF2[BX],AL

INC SI

INC SI

LOOP LOP2

MOV SI,1

DEC DL

JNE LOP1

MOV AH,4CH

INT 21H

COSEG ENDS

END BEGIN

14、TEST DX,01H

JE L1

L1:

上述程序段运行后试DX中的数据形成偶数。如原来已是偶数,DX中内容不变;如DX中原来是奇数,试回答:

(1)用加1形成偶数,这时空白处填一条什么指令?

(2)用减1形成偶数,这时空白处填一条什么指令?

15、DA1 DB 2,3,7,0AH,0FH,4,5,9,8,0CH

XOR AX,AX

MOV CL,0

MOV BX,0

LOP: TEST DA1[BX],01H

JE NEXT

ADD AL,DA1[BX]

INC AH

NEXT: INC BX

INC CL

CMP CL,10

JNE LOP

上述程序段执行后,AH和AL中内容分别是多少?

16、AA1 DB 10H DUP(2)

AA2 DW 10H DUP(0304H)

MOV BX,0

MOV AL,0

MOV CX,10

BB1: ADD AL,AA1[BX]

ADD AL,BYTE PTR AA2[BX]

INC BX

LOOP BB1

上述程序段运行期间,当执行完INC BX且(BX)=05H时,CX和AL中的内容分别是多少?17、DB1 DB 4 DUP(2,4,6,8)

LEA BX,DB1

MOV CX,10H

MOV AX,0

LOP: ADD AL,[BX]

AND AL,0FH

CMP AL,8

JBE NEXT

INC AH

SUB AL,08H

NEXT: LOOP LOP

上述程序段执行后,(AX)=?如果LOOPNE指令替代LOOP指令,那么上述程序段执行后,(AX)=?(CX)=?

18、下面程序段是判断寄存器AH和AL中第3位是否相同,如相同,AH置0,否则AH置非0。试在空白处填上适当的指令(一个空白只填一条指令)。

AND AH,08H

MOV AH,0FFH

JMP NEXT

ZERO: MOV AH,00H

NEXT:……

19、试用两条指令完成对寄存器AH和AL分别加1,且AL加1形成的进位加在AH的最低位,AH中加1形成的进位加在AL的最低位。

20、试编制一程序,把DA_BY1字节存储单元的8位二进制数分解成3个八进制数,其中高位八进制数存放在DA_BY2的字节存储单元中,最低位存放在DA_BY2+2的字节存储单元中。例如数据单元定义如下:

DA_BY1 DB 6BH

DA_BY2 DB 3 DUP(0)

21、试编制已程序,统计DA_WORD数据区中正数、0、负数的个数。数据段为:

DATA SEGMENT

DA_WORD DW -1,3,5,0,-5,-7,4,0,7, …

COUNT1 DB $-DA_WORD

COUNT2 DB 0 ;存放正数的个数

DB 0 ;存放0的个数

DB 0 ;存放负数的个数

DATA ENDS

22、仔细阅读下面程序段,试回答:

(1)该程序段完成的功能是什么?

(2)如(AL)=36H,程序段运行后(AL)=?

MOV BL,AL

AND AL,0F0H

MOV CL,04H

SHR AL,CL

SAL AL,1

MOV CL,AL

SAL AL,1

SAL AL,1

ADD AL,CL

AND BL,0FH

ADD AL,BL

23、下面程序用DOS的1号功能调用从键盘接收字符。试问:

(1)程序运行结束时,如(BL)=0,表示从键盘接收的字符范围是多少?如(BL)=1,表示从键盘接收的字符范围是什么?

(2)程序在什么情况下结束?

LOP: MOV AH,1

INT 21H

CMP AL,’*’

JE EXIT

CMP AL,’9’

JBE ZERO

CMP AL,’A’

JB ONE

CMP AL,’Z’

JBE ZERO

ONE: MOV BL,1

JMP LOP

ZERO: MOV BL,0

JMP LOP

EXIT: MOV AH,4CH

INT 21H

相关文档