资源描述
练习一
1.在计算机内部,计算机能够直接执行的程序语言是 C
A.汇编语言 B.C++语言 C.机器语言 D.高级语言
2.在堆栈段中,存放栈顶地址的寄存器是 B
A.IP B.SP C.BX D.BP
3.指令指针寄存器IP用来存放代码段中的偏移地址,在程序运行的过程中,它始终指向A
A.下一条指令的首地址 B.下一条指令的地址 C.当前指令的首地址 D.当前指令的地址
4.编译程序的功能是 B
A.检查源程序中的语法错误和逻辑错误
B.将源程序编译成目标程序
C.改正源程序中的语法错误
D.将高级语言源程序翻译成汇编语言源程序
5.用户为了解决自己的问题,用汇编语言所编写的程序,称为 B
A.目标程序 B.源程序 C.可执行程序 D.汇编程序
6.计算机中用来存储程序、数据等信息的记忆装置是 D
A.控制器 B.运算器 C.CPU D.存储器
7.在宏汇编中,源程序必须通过__编译__生成目标代码,然后用连接程序将其转化为可执行文件, 该文件可在系统中运行。
8.当SS=3000H,SP=0100H时,执行PUSH AX 指令后,堆栈顶部的物理地址是 D
A.30100H B.30098H C.30102H D.300FEH
9.设10000010B分别以原码、补码及反码表示时,则对应的十进制数依次是 C
A.-82、-126、-2 B.-2、-125、126 C.-2、-126、-125 D.-82、-125、125
10 若寄存器AX、BX、CX、DX的内容分别为18,19,20,21时,依次执行PUSH AX,PUSH BX,POP CX,POP DX后,寄存器CX的内容为__19__
11.若物理地址为2D8C0H,偏移量为B6A0H,则段地址为 __2222H__
12.设(AL)=70H,分析在SUB AL,9AH后,标志寄存器中CF、OF、ZF、PF、SF的状态.
(CF)=1、(OF)=1、(ZF)=0、(PF)=0、(SF)=1
练习二
1. 8086在基址变址的寻址方式中,基址、变址寄存器分别是 B
A. AX或CX、BX或CX B.BX或BP、SI或DI
C.SI或BX、DX或DI D.CX或DI、CX或SI
2. 设(SS)=338AH,(SP)=0450H,执行PUSH BX和PUSHF两条指令后,堆栈顶部的物理地址是 A
A.33CECH B.33CF2H C.33CF4H D.33CE8H
3. 设(AX)=0C544H,在执行指令ADD AH,AL后,相应的状态为 C
A.CF=0、OF=0 B.CF=0、OF=1
C.CF=1、OF=0 D.CF=1、OF=1
4.设DS=2000H,SS=1500H,(ES)=3000H,(SI)=00B0H,(BX)=1000H,(BP)=0020H,指出下列指令的源操作数的寻址方式是什么?若该操作数为存储器操作数,请计算其物理地址。
(1) MOV AX,DS:[0100H] 直接寻址 (PA)=20100H
(2) MOV BX,0100H 立即寻址
(3) MOV AX,ES:[SI] 直接寻址 (PA)=300B0H
(4) MOV CL,[BP] 寄存器间接寻址 (PA)=15020H
(5) MOV AX,[BX][SI] 基址变址寻址 (PA)=210B0H
(6) MOV CX,BX 寄存器寻址
(7) MOV AL,3[BX][SI] 基址变址寻址 (PA)=210B3H
(8) MOV AL,[BX+20] 变址寻址 (PA)=21014H
练习三
1.假设V1和V2是用DW定义的变量,下列指令中正确的是 B
A.MOV V1,V2 B.MOV V1,20H C.MOV 2000H,V2 D.MOV AL,V1
2.执行下面的程序段后,AX = B
NUM = 100
MOV AX, NUM EQ 100
A.50 B.0FFFFH C.1 D.0
3.数据定义BUF DB ‘1234’,执行指令MOV CL,LENGTH BUF后,CL寄存器的内容是 A
A.1 B.2 C.3 D.4
4.若定义 DATA DW 1234H ,执行MOV BL,BYTE PTR DATA指令后,BL= 1
5、对于下面的数据定义,各条MOV指令单独执行后,请填充有关寄存器的内容:
TABLE1 DB ?
TABLE2 DW 20 DUP(?)
TABLE3 DB ‘ABCD’
MOV AX,TYPE TABLE1 ; AX=1
MOV BX,TYPE TABLE2 ; BX=2
MOV CX,LENGTH TABLE2 ; CX=20
MOV DX,SIZE ABLE2 ; DX=40
MOV SI,LENGTH TABLE3 ; SI=1
练习四
1.设(SS)=338AH,(SP)=0450H,执行PUSH BX和PUSHF两条指令后,堆栈顶部的物理地址是 A
A.33CECH B.33CF2H C.33CF4H D.33CE8H
2. 若(AX )=-15,要得到(AX) =15应执行的指令是 A
A. NEG AX B.NOT AX C.INC AX D.DEC AX
3. 将累加器AX 内容清零的错误指令是 D
A.AND AX,0 B.XOR AX,AX C.SUB AX,AX D.CMP AX,AX
4.填写执行下列程序段后的结果
MOV DX,8F70H
MOV AX,54EAH
OR AX,DX
AND AX,DX
NOT AX
XOR AX,DX
TEST AX,DX
(AX)=FFFFH (DX)=8F70H SF=1 OF=0 CF=0 PF=0 ZF=0
5.DAT1 DW 12H,23H,34H,46H,57H
DAT2 DW 03H
LEA BX, DAT1
ADD BX, DAT2
MOV DX,[BX]
MOV AX,4[BX]
SUB AX,DX
执行上列程序段后,AX的内容为 2300H
练习五
1. 将变量BUF的偏移地址送入SI的正确指令是 C
A.MOV [SI],BUF B.MOV SI,BUF C.LEA SI,BUF D.MOV OFFSET BUF,SI
2. 假设VAR为变量,则指令MOV SI,OFFSET VAR的源操作数的寻址方式是 D
A.间接寻址 B.存储器寻址 C.寄存器寻址 D.立即寻址
3. 指令 “MOV BX,AL”错误的原因是 字节类型不匹配
4.设(AX)=2011H,执行CMP AX,2011H 后(AX)= 2011H
5.写出将字数据56H、78、45H、209AH放在变量DATA起的存储单元中的伪指令
DATA DW 56H,78,45H,209AH
设数据段定义如下:(6~8题均采用该数据段)
DATA SEGMENT
NA EQU 15
NB EQU 10
NC DB 2 DUP (4,2 DUP (5,2))
CNT DB $-NC
CWT DW $-CNT
ND DW NC
DATA ENDS
6.从DS:0000开始至CNT单元之前存放的数据依次是 D
A.15,10,4,5,2,5,2,4,5,2,5,2 B.15,10,4,2,5,2,4,2,5,2
C.0FH,0AH,4,5,2,5,2 D.4,5,2,5,2,4,5,2,5,2
7.ND单元中的值是 A
A.0000H B.0200H C.0003H D.0002H
8.CWT单元中的值是 B
A.2 B.1 C.11 D.12
练习六
1.如果用调试程序DEBUG的R命令在终端上显示当前各寄存器的内容如下,请说明当前堆栈段段基址是多少?栈顶的物理地址是多少?21FOH 31EEEH
C>DEBUG
-R
AX=0000 BX=0000 CX=0079 DX=0000 SP=FFEE BP=0000 SI=0000
DI=0000 DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL
NZ NA PO NC
2.有指令 JMP DX ,在执行前,DX=1234H ,IP =5678H,执行该指令后,寄存器变化正确的是B A.DX=1234H IP =5678H B.DX=1234H IP =1234H
C.DX=5678H IP =5678H D.DX=5678H IP =1234H
3. 若要检测AL中的最高位是否为1,若为1,则转移到标号NEXT处,否则顺序执行,请用两条指令完成之。
TEST AL,80H JNE NEXT
4. 试用一条指令将一字节的立即数5AH与符号地址为NUM的存储器字节单元内容相比较
CMP BTYE PTR NUM,5AH
5.试分析下列程序段,说明它完成什么操作?程序执行后,HEXNUM字节单元中的内容是什么?
ASCNUM DB 38H
HEXNUM DB ?
MOV AL,ASCNUM
CMP AL,39H
JBE NEXT
SUB AL,7
NEXT:SUB AL,30H
MOV HEXNUM,AL
HLT
将ASCNUM中的所便是的十六进制数的ASCII码转换成十六进制数,并放入字节单元中
HEXNUM=08H
练习七
1. 已知AX=0FFFFH,DX=0001H
MOV CX,2
LOP:SHL AX,1
RCL DX,1
LOOP LOP
上述程序段执行后,DX=0007H AX= 0FFFCH
2.已知AX=78H,BX=0804H
SHR BX,1
AND BX,0F0FH
MOV CX,4
LOP:XCHG BH,BL
DIV BL
SAL AX,1
LOOP LOP
上述程序段执行后,AX=001EH BX=0402H
3. CODE SEGMENT
ASSUME CS: CODE
ORG 100H
BEGIN:MOV AX, 01H
MOV BX, 02H
MOV DX, 03H
MOV CX, 04H
L20:INC AX
ADD BX, AX
SHR DX, 1
JNZ L20
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
当执行以上程序后,AX、BX、CX、DX中的值分别是多少?:
AX= 03H BX= 07H CX= 04H DX= 0
4.已定义了两个字变量A和B,补充下列程序段使之完成下列功能:
A.若两个数中有一个是奇数,则将奇数存入A中,偶数存入B中。
B.若两个数均为奇数,则将两数均加1后存回原变量。
C.若两个数均为偶数,则两个变量均不改变。
MOV AX,A
TEST AX,__0001H____
JZ A_EVEN
MOV BX,B
TEST BX,0001H
JZ B_EVEN
INC___AX__________
MOV A,AX
INC___BX_________
MOV B,BX
B_EVEN: JMP___EXIT__________
A_EVEN: MOV BX,B
TEST BX,0001H
JZ EXIT
XCHG__AX,BX_________
MOV A,AX
MOV B,BX
EXIT:
练习八
1.CALL DWORD PTR [BX]指令是段间调用还是段内调用。它一共向堆栈中压入几个字?
段间调用 2个字节
2. 在子程序设计时,为什么要保护和恢复现场?
子程序会调用到主程序用过的寄存器,为了防止调用时改变寄存器里面的内容,所以保护现场,子程序调用结束再恢复现场
3.设(AX)=1122H,(BX)=3344H,(SP)=5566H,执行如下程序段后,IP和SP的值分别是什么?
SUN PROC
PUSH AX
ADD BX,AX
PUSH BX
POP BX
RET
SUN ENDP
(IP)=1122H、(SP)=5566H
4.设在DAT单元存放一个-9~+9的字节数据,在SQTAB数据区中存放了0~9的平方值,下面程序段利用直接查表法在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。请补充空格处,完善程序功能。
DSEG SEGMENT
DAT DB XXH ; XXH表示在-9~+9之间的任意字节数据
SQTAB DB 0,1,4,9,...81
SQR DB ?
DSEG ENDS
SSEG SEGMENT STACK
STK DB 100 DUP (?)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DESG,SS:SSEG
START: MOV AX,DSEG
MOV DS,AX
MOV AL,DAT
AND AL,_80H______
JNS NEXT
NEG__AL_________
NEXT: MOV BX,OFFSET SQRTAB
XLAT__SQRTAB_________
MOV SQR,AL
MOV AH,4CH
INT 21H
DESG ENDS
END START
练习九
1、下列指令中,在指令执行后有可能影响CS值的指令数目是 B
JMP MOV RET ADD INT JC LODS CALL MUL POP
A.3 B.4 C.5 D.6
2、下面关于宏指令的叙述不正确的是 B
A.宏指令可以简化源程序的书写;
B.宏指令可以简化目标程序;
C.宏指令和子程序的存储形式和执行方式均不相同;
D.从形式上看,宏指令可以扩充机器的指令系统。
3.对于下列程序段:
AGAIN:MOV ES:[DI],AL
INC DI
LOOP AGAIN
可用指令 B 完成相同的功能。
A.REP MOVSB B.REP STOSB C.REP LODSB D.REP SCASB
4.在下列指令中,隐含使用AL寄存器的指令有 D 条。
AAA MOVSB MUL BHCBW SCASB XLAT
A. 2 B.3 C.4 D.5
5.假设ES段中有一个字符中串‘12FG3LM5C’,其名为ARRAY.当以下程序段执行后,CX的值是 B
CLD
LEA DI,ES:ARRAY
MOV AL,‘G’
MOV CX,9
REPNE SCASB
HLT
A.0 B.5 C.4 D.9
6.已知DS和ES指向同一个段,且当前数据段从0000H到00FFH单元内容分别为01H,02H,03H,…,0FFH,00H。问下列程序段执行后,0000~0009H的内容是些什么值
MOV SI,0000H 01,01,02,02,04,04,06,06,08,08
MOV DI,0001H
MOV CX,0080H
CLD
REP MOVSB
展开阅读全文