汇编考题有详解.docx
- 文档编号:30687178
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:25
- 大小:33.77KB
汇编考题有详解.docx
《汇编考题有详解.docx》由会员分享,可在线阅读,更多相关《汇编考题有详解.docx(25页珍藏版)》请在冰豆网上搜索。
汇编考题有详解
一、单项选择题
1、使计算机执行某种操作的命令是(指令)不解释
2、换码指令的助记符是(C)
A.XCHG(交换字或字节)B.LEA(装入有效地址)C.XLAT(以BX+AL的和作为偏移地址,与DS共同作为操作数的逻辑地址)D.MOV(将源操作数送入目的操作数)
3、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(B)。
A.AX,BX,CX,DX:
(数据寄存器)B.BX,BP:
(基址寄存器)SI,DI:
(变址寄存器)
C.SP,IP,BP,DXD.CS,DS,ES,SS(段寄存器)
6、以下各个指令中正确的是(B)。
A.MOVCS,DX(CS不可做目的操作数)B.MOVDS,BP
C.IN20H,AL
(IN作用是从端口中读入一个字节或字,并保存在寄存器AL或AX中。
OUT作用是把寄存器AL或AX的内容输出到指定端口。
)
D.MOVAH,BX(目的操作数与源操作数的数据类型(字节、字、双字等)要一致)
7、下列对OUT指令的叙述正确的是(D)。
A.实现从端口中读出数据B.能直接访问的端口范围是0~1KB
C.能访问的端口为64KBitD.只能用DX做为间接寻址的寄存器
OUT指令:
OUT PortNo/DX,AL/AX
功能:
将累加器AL或AX的内容输出到指定端口
1.直接方式:
端口地址范围:
00H~0FFH(255byte);间接方式:
0000H~0FFFFH(64kb)
2.间接方式的寄存器:
DX
IN指令:
IN AL/AX,PortNo/DX
1.功能从一个端口读取1字节或1字,传送至累加器AL或AX。
2.端口地址超过0FFH,则才用间接方式,同out指令
8、已有汇编语句“VAREQU1220H”,则语句“movAX,VAR”中源操作数的寻址方式为(A)。
EQU:
功能,用符号名代表表达式的值
A.立即寻址B.直接寻址
C.寄存器间接寻址D.基址寻址
9、与MOVBX,OFFSETVAR指令完全等效的指令是(D)。
不解释
A.MOVBX,VARB.LDSBX,VAR
C.LESBX,VARD.LEABX,VAR
LEA:
将存储器型的数据的偏移量送入目的操作数
10、指令INC一定不会修改的标志是(C)。
INC:
功能,实现8/16位通用寄存器或存储器单元的自加1
其结果影响AF、OF、PF、SF和ZF,对CF无影响
各标识符的改变条件:
CF:
进位(最高位是否进位或借位);AF:
辅助进位(低字节向高字节进位或错位)
OF:
溢出(加减引起的溢出)PF:
奇偶(字节中的1的个数是否为偶)
SF:
符号(结果的正负,最高位为1,置1)ZF:
零(结果是否为0)
A.溢出标志OFB.符号标志SF
C.进位标志CFD.奇偶标志PF
11、已知DS=2000H,ES=1000H,SI=0800H,内存10880H开始的两个单元中存放5678H,内存20880H开始的两个单元中存放8765H,则语句“LEABX,[SI+80H]”执行后BX的值为(C)。
[SI+80H]:
地址:
(DS*16D+SI+80H)=20000H+0800H+0080H=20880H
EA:
SI+80H=0880H
LEA:
把一个内存变量的有效地址(EA)送给指定的寄存器
此格式属于相对寄存器寻址方式:
其可采用的寄存器为:
BX、BP、SI、DI
A.5678HB.1000HC.0880HD.8765H
12、汇编结束语句有
(2)种格式,为(END和END程序的启动地址标号)。
A.1,ENDB.1,END程序的启动地址标号
C.2,END和END程序的启动地址标号D.以上都不正确
13、指令“CALLFARPTRSUM”执行时将会向堆栈中顺次压入(B)。
A.IP、CSB.CS、IP
C.标志寄存器值、IPD.标志寄存器值,CS、IP
利用堆栈传递参数:
NEAR:
仅将IP寄存器的内容压入堆栈
FAR:
必须压入CS寄存器和IP寄存器的内容(顺序:
先CS后IP)
14、要在程序中定义缓冲区BUF,保留10个字节存储空间的语句是(C)不解释
A.BUFDW10B.BUFDB10
C.BUFDB10DUP(?
)D.BUFDW10DUP(?
)
15、IBMPC微机中,有符号数是用(B)表示的不解释
A、原码 B、补码 C、反码 D、BCD码
16、设SP初值为3050H,执行指令PUSHBX后,SP的值是(B )
堆栈:
PUSH,SP↓;POP,SP↑注意:
此处为16进制,个位最大为F
A.304FHB.304EH
C.3048HD.3049H
17、JMPBX指令的寻址方式是(D )
JMP:
1.段内直接转移:
直接给出转移地址的偏移量例:
JMP[100H]
2.段内间接转移:
给出一个操作数(16位通用寄存器或1个子存储单元)例:
JMPBX
3.段间直接转移:
将一代码段转移到另一代码段,转移目标地址由CS和IP共同组成例:
JMP[BX+2]
4.段内间接转移:
无条件地转移操作数(双字节)的内容到给出的目标地址处例:
JMPDWORDPRT[BX+2]
A.寄存器寻址B.寄存器间接寻址
C.段内直接转移寻址D.段内间接转移寻址
28、DF=1,执行MOVSB指令后(A )
对于所有的串指令,DF=0,SI、DI加1;DF=1,SI、DI减1
A.SI减1,DI减1B.SI加1,DI加1,CX减1
C.SI减1,DI减1,CX减1D.SI加1,DI加1,CX加1
19、指令MOVBX,MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么源操作数的物理地址为:
B
A.17500H B.16500H C.14500H D.13500H
MASK此处表示一个偏移量(在汇编中,它同时也是一个保留操作符,在这里不解释)
用BP确定的有效地址,其默认段为SS; 此处为寄存器相对寻址
20、十六进制数88H,可表示下面几种形式,请找出错误的表示(D)。
不解释
A.无符号十进制数136 B.带符号十进制数-120
C.压缩型BCD码十进制数88D.8位二进制数-8的补码表示
21、指令指针寄存器是(A)。
不解释
A.IPB.SPC.BPD.PSW
22、设数据段中已有:
DA1DB12H,34H
DA2DW56H,78H
23、下面有语法错误的语句是(B)。
A.ADR1DWDA1B.MOVDA1+1,AX(数据类型不一致,同上某题)
C.MOVBYTEPTRDA2+1,ALD.MOVWORDPTRDA1+1,AL
24、堆栈的工作方式是(D)不解释
A.先进先出B.随机读写 C.只能读出,不能写入D.后进先出
25、指令MOVAX,[3070H]中源操作数的寻址方式为(B)不解释
A.寄存器寻址B.直接寻址 C.立即寻址D.间接寻址
26、要求CX=-1时转至MINUS处,下面的指令序列不能实现这一功能的是(C)。
不解释
A、INCCX
JZMINUS
B、SUBCX,OFFFFH
JZMINUS
C、ANDCX,OFFFFH
JZMINUS
D、XORCX,OFFFFH
JZMINUS
27、以下跳转指令中不属于段内跳转的是(C):
详见上某题
A.JMPNEARPTRL1B.JMPSHORTL2
C.JMPDWORDPTR[BX]D.JNZL3
28、对寄存器AX的内容乘以4的正确指令是(B)。
(CL=2)不解释
A.SHRAX,CLB.SHLAX,CL
C.ROLAX,CLD.RCRAX,CL
29、十六进制数88H,可表示成下面几种形式,请找出错误的表示(D)。
不解释
A.无符号十进制数136 B.带符号十进制数-120
C.它的二进制形式是10001000B C.8位二进制数-8的补码表示
30、存放条件码标志、控制标志和系统标志的寄存器是(D)。
A.IP B.SP C.BP D。
PSW(即FR)
符号约定:
OPR:
操作数
DST:
目的操作数
SRC:
源操作数
REG:
16/8位通用寄存器(AX、BX、CX、DX等)
EA:
偏移地址PA:
物理地址SB:
段首地址LA:
逻辑地址
mem:
存储器单元
SegReg:
段寄存器(CS、DS、ES、SS)
port:
端口
二、判断下列指令是否正确
1.POPCS(×)
PUSH/POPOPR(OPR可为:
REG、mem、SegReg)PUSH和POP均只能进行字操作
但对于POP的SegReg不可为CS
2.M1EQU10H
MOVM1,BL(×)
DST不可为立即数
3.M2DB10
MOVAL,M2(√)
4.PUSHWORDPTR20[BX+SI-2](√)
5.LEABX,4[BX](√)
6.JMPBYTEPTR[BX](√)从形式上看为段内间接寻址(转移的有效地址应存放于16位寄存器或字单元中),则应将存储单元指定为字单元,BYTE改为WORD则正确
7.SARAX,5(√)指令格式:
SAL/SAR Reg/Mem,CL/Imm
8.MOVBYTEPTR[BX],1000(×)两操作数类型不一致
9.CMP[DI],[SI](√)本指令中分别给出了两操作数的地址
10.ADDBX,OFFSETA(√)
11.INAL,DX(√)INAL/AX,PortNo/DX
12.MUL25(×)MULReg/Mem
NAMEDB‘TOM’
DB20
DB‘KATE’
DB2DUP(0,1,2,?
)
13.MOVAX,NAME(×)
14.MOVAX,WORDPTRNAME+1(√)
15.MOVAL,NAME(√)
INC[AL]
16.JMPNAME(√)
17.MOVBX,OFFSETNAME(×)
MOVAL,[BX+2]
18.MOVSI,2(√)
MOVDI,3
MOVAL,NAME[SI][DI]
19.MOVAL,NAME(√)
MOVCS,AL
20.MOVSI,1(√)
MOVBX,OFFSETNAME[SI]
三、填空
1.8086/8088CPU可访问2个独立的地址空间,一个为存贮器地址空间,其大小为1M(
)个字节;另一个为I/O地址空间,其大小为65536字节(64k)。
2.计算机中的指令由操作码字段和操作数字段两部分组成
3.n位数的补码的表示范围为:
-
-1 4.在8086CPU中逻辑段的最大长度是64k。 5.代表无符号数运算溢出的标志位是CF。 玩文字游戏……,蛋疼 6.LOOP指令的结束条件是CX=0。 1.汇编语言中,(CX)循环计数器只能递减。 2.如果(CX)≠0或(ECX)≠0,转向“标号”所指向的指令,否则,终止循环,执行该指令下面的指令。 7.指令MOVDX,[BX+SI+100H]的源操作数为相对基址变址寻址方式。 8.假设(DS)=2000H,(ES)=3000H,(SS)=4000H,(BX)=1000H,(BP)=1000H,(DI)=0002H,(21000H)=1234H,(21002H)=5678H,(31000H)=9ABCH,(31002H)=0DEF0H,(41000H)=3456H,(41002H)=789AH。 则MOVAX,ES: [1000H]执行时操作数的物理地址为31000H;MOVAX,[BX]执行后(AX)=1234H;MOVAX,[BP+DI]执行时操作数的物理地址为41002H,(BP的默认段为SS)执行后(AX)=3456H。 8086存储器中存放信息如图所示,则30022H单元的字节内容为32h,30020H单元的字内容为1130h。 10.已知(CS)=1500H,(IP)=0110H,则8086执行指令的物理地址为15110H,如果该指令是长度为2字节的加法指令,则在无中断产生的情况下,执行完该指令后IP=0112H。 IP为指令指针寄存器,它用来存放代码段中的偏移地址。 在程序运行的过程中,它始终指向下一条指令的首地址,它与段寄存器CS联用确定下一条指令的物理地址。 当“这一地址”送到存储器后,控制器可以取得下一条要执行的指令,而控制器一旦取得这条指令就马上修改IP的内容,使它指向下一条指令的首地址。 11.现有(DS)=3000H,(BX)=0100H,(SI)=0002H,(30100H)=12H,(30101H)=a7H,(30102H)=35H,30103H=98H,填写每条指令执行后AX的值 (1)MOVAX,1200HAX=1200H (2)MOVAX,[BX]AX=12H (3)MOVAX,[BX+SI]AX=35H (4)MOVAX,[SI+100H]AX=35H 12.已知数据段有如下定义: ORG0200H(设置$=0200H) TABLEDW0314H 填写指令执行后AX的值。 MOVAX,OFFSETTABLEAX=0200H MOVAX,TABLEAX=0314H 13.设(CS)=1000H,BX=1100H,则执行指令JMPBX后,IP=1100H,指令的物理地址为11100H 段内转移,JMP指令只把目标指令位置的偏移量赋值指令指针寄存器IP,从而实现转移功能。 15.调用程序、子程序传送参数的方法通常有寄存器、存储单元和堆栈三种方法。 四、简答 1、简述指令与伪指令的区别。 答: 指令: 可由编译器编译为机器指令的汇编语句就是指令,他们与特定的机器指令对应 伪指令: 它以汇编指令的形式存在,但并不被编译为机器指令,他们用于告知编译器完成某些操作或设置 在80x86实模式下,在一个程序开始运行的时候(CS)=0BA3H,(IP)=0978H,请问该程序第一个字的物理地址是多少? 0C3A8H 2、以下指令中哪些属于段间转移指令? (1)JNCNEXT (2)JMPBX (3)JMPFARPTRLOP1(4)JMPWORDPTRES: [2000H](段间直接寻址) (5)JMPDWORDPTR[BX+10H](段间间接)(6)JMPNEARPTRTOWHERE 答: 1、3、4、5 3、子程序声明中主要有哪些属性可以指定? 子程序名PROTO[distance][langtype][,[parameter]: tag]... 该说明语句告诉汇编程序该子程序的若干属性,如: 位距、语语言类型、参数个数及其类型等。 这样,汇编程序就可以对其定义进行适当的检查。 4、8086中基本结构寄存器的通用寄存器有哪些,段寄存器又有哪些? 通用寄存器: 4个数据寄存器(AX、BX、CX和DX)、2个变址和指针寄存器(SI和DI)、2个指针寄存器(SP和BP) 段寄存器: 4个段寄存器(ES、CS、SS和DS) 5、子程序中通常要保护现场和恢复现场,如在子程序中用如下指令序列保护现场: PUSHAX PUSHSI PUSHBP 请写出对应的恢复现场的指令序列。 POPBP POPSI POPAX 现有(AX)=2000H,(BX)=1200H,(SI)=0002H,(DI)=0003H,(DS)=3000H,(SS)=3000H, (SP)=0000H,(31200H)=50H,(31201H)=02H,(31202H)=0F7H,(31203H)=90H 6、请写出下列各条指令独立执行完后,有关寄存器及存储单元的内容,若该指令影响条件码,则请给出条件码SF,ZF,OF,CF的值。 1,ADDAX,1200H 2,SUBAX,BX 3,MOV[BX],AX 4,PUSHAX 5,DECBYTEPTR[1200H] 6,NEGWORDPTR[1200H] 7,SARBYTEPTR1200[SI],1 8,ROLBYTERTR[BX+SI+1],1 9,MULWORDPTR[BX][SI] 10,DVIBYTEPTR1200[DI] SF ZF OF CF 内容 1 0 0 0 0 AX=3200H 2 0 0 0 0 AX=OEOOH 3 0 0 0 0 (31200H)=2000H 4 0 0 0 0 (3FFFEH)=2000H,(SP)=OFFFEH 5 0 0 0 / (31200H)=4FH 6 1 0 0 1 (31200H)=OFDB0H 7 1 0 0 1 (31202H)=OFBH 8 / / 1 1 (31203H)=21H 9 1 1 (DX)=121EH,(AX)=OEOOOH 10 无定义 (AL)=38H,(AH)=8OH 五、按要求回答问题。 1.以下的程序实现将内存单元20000H开始的100个字节初始化为‘a’,请将程序补充完整。 MOVDS,2000H MOVSI,0H MOVCX,100 MOVAX,’a’ REPSTOSB 2.设num1,num2都为字变量,请指出下面语句序列的功能 MOVAX,num1——将num1送入AX中 XORDX,DX——将DX置0 ORAX,AX ——使进位标志CF和溢出标志OF等于0,也按照AX的值影响ZF、SF和PF JNSSKIP——SF为0的时候跳转,即num1是正数则跳转 MOVDX,OFFFFH——将-1送入DX SKIP: IDIVnum2——num2除num1 附: 两个数据(这里是AX寄存器的值)进行逻辑或(OR)运算,结果AX没有变化,但是该指令执行后还影响状态标志,其中使进位标志CF和溢出标志OF等于0,也按照AX的值影响ZF、SF和PF。 3.下面的程序通过子程序调用,将数组ARRAY的COUNT个元素求和,并将结果送SUM单元,分析这段程序后,补充完整程序中的空格部分,并请画出用堆栈传送参数地址时,堆栈最满时的状态: SUMDW? ARRAYDW200DUP(? ) COUNTDW200 ……… MOVDX,OFFSETSUM PUSHBX MOVBX,OFFSETARRAY PUSHBX MOVBX,OFFSETCOUNT PUSHBX CALLSUMPRO ……… SUMPROPROCNEAR PUSHAX PUSHBX PUSHSI 堆栈最满时的状态 BP DI SI BX AX COUNT BP+10 ARRAY BP+12 SUM BP+14 PUSHDI PUSHBP MOVBP,SP MOVSI,[BP+12];得到ARRAY的地址 MOVDI,[BP+10];得到COUNT的地址 MOVCX,[DI] MOVDI,[BP+14];得到SUM的地址 XORAX,AX NEXT: ADDAX,[SI] INCSI INCSI LOOPNEXT MOV[BX],AX;送求和结果 POPBP POPDI POPSI POPBX POPAX RET SUMPROENDP 4.MOVCX,NUM XORAL,AL;AL置0 L1: JCXZL2;JCXZ有条件转移指令;格式: jcxz标号(如果cx=0转移到标号处执行) SHLCX,1;CX左移移位 JNCL1;CF=0,即无进位,则跳转 INCAL;AL自加1 JMPL1 L2: MOVRESULT,AL 问题: (1)该程序段的功能是。 取NUM二进制表示中的1的个数送入RESULT中 (2)若NUM中数据是0E5A6H,则运行后RESULT中数据为9H。 5.STRINGDB‘ABCDEFGHIJ’ : MOVAH,01;从键盘输入字符1~9 INT21H SUBAL,30H;将数的ASCII转换为其表示的数值 DECAL;string首地址是0,为了使输入的数字与string对应,即减1操作 XORAH,AH;AH置0 MOVBX,OFFSETSTRING;将数据段(STRING)地址送入BX ADDBX,AX MOVBL,[BX];BX地址内容给BL MOVAH,02H;显示输出 INT21H 试回答: (1)上述程序段的功能是什么? 根据输入的数字从字符串中取出相应的字符并输出 (2)如从键盘输入字符`6`,屏幕有什么结果? F 6.阅读下列程序回答问题: DATASEGMENT BUFDB32H,75H,0C9H,85H;共4个数据 RESULTDB? DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA START: MOVAX,DATA MOVDS,AX LEASI,BUF MOVCX,4 MOVBX,0 LP1: MOVDH,8 MOVAL,[SI] LP2: RORAL,1 JCNEXT INCBX NEXT: DECDH JNELP2 INCSI LOOPLP1 MOVRESULT,BX MOVAH,4CH INT21H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 考题 详解