教材习题集Word格式文档下载.docx
《教材习题集Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《教材习题集Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
0100H
(3)2350H:
1ABCH
(4)10E0H:
2020H
2.10数据段中某个存储单元在(DS)=095FH时,物理地址是11820H,那么当DS=0F5FH时,物理地址为多少?
2.11已知一条指令执行前,(CS)=03FAH,(IP)=45A0H,该指令的第1字节的物理地址是多少?
2.12如图2.19所示,试写出地址为20021H、20024H、20026H字节单元的内容,以及地址为20022H、20024H、20026H的字单元内容。
图2.19习题2.10图示
2.13如图2.20所示,地址20000H为数据段的段基址,那么逻辑地址为2000H:
0020H的存储单元的物理地址是多少?
该地址的字内容是多少?
图2.20习题2.11图示
2.14IBMPC微型计算机中某一个存储单元的物理地址是12345H,试计算下列不同的逻辑地址表示:
(1)1234H:
________H
(2)_______H:
0345H
2.15设堆栈寄存器(SS)=3E4BH,程序中设置堆栈长度为200个字节,试计算出堆栈底部字单元物理地址、堆栈指针SP初始值(即堆栈中没有数据时)和SP初始值指向的物理地址。
2.16设(AX)=1122H,(BX)=3344H,(CX)=5566H,(SP)=2000H,试分析以下程序执行后AX、BX、CX、SP中的内容分别为多少?
并画出堆栈变化的示意图。
:
PUSHAX
PUSHBX
PUSHCX
POPAX
POPCX
2.17设(SP)=0040H,如果用入栈指令存入5个数据,则SP为多少?
若又用出栈指令取出2个数据,则SP为多少?
习题三
3.1写出下列指令源操作数的寻址方式,并说明该操作数在哪个段?
(1)MOVAX,68H
(2)MOVAH,BL
(3)MOVAX,[BX]
(4)MOVAX,[SI]
(5)MOVAX,[5000H]
(6)MOVAL,BLOCK
(7)MOVBX,[BP+5]
(8)MOVAX,CS:
[1000H]
(9)MOVDS,AX
(10)MOVBL,BUF[SI]
(11)MOVAX,BUF[BX][SI]
(12)MOVAX,[BP–10][DI]
(13)MOVAX,SS:
[BX–100][SI]
(14)MOVAX,AREY[BP][SI]
3.2假设(DS)=3000H,(ES)=4100H,(SS)=2000H,(SI)=00A0H,(DI)=2H,(BX)=100H,(BP)=10H,(BUF)=2000H。
试指出下列各指令中源操作数的寻址方式,若为存储器操作数,请计算其物理地址。
(1)MOVAL,[0ABCH]
(2)MOVAX,SI
(3)MOVAX,BUF
(4)MOVAX,BUF[BX]
(5)MOVAX,[BX]
(6)MOVAX,[SI]
(7)MOVAL,[BP]
(8)MOVAX,BUF[BP][SI]
(9)MOVAX,[BX–40H]
(10)MOVAX,40H[SI]
(11)MOVAX,[BX–40H][BX]
(12)MOVAX,[BP+100H][SI]
(13)MOVAX,BUF[DI]
(14)MOVAX,ES:
BUF[BX][DI]
3.3已知(SS)=0915H,(DS)=0930H,(SI)=0A0H,(DI)=1C0H,(BX)=80H,(BP)=470H。
现有一条指令“MOVAX,SRC”,若源操作数的物理地址为095C0H,试用四种不同的寻址方式改写此指令(要求上述每个已知条件至少要使用一次)。
3.4指出下列指令是否合法。
(1)MOVAX,DL
(2)MOV[BX],5
(3)ADDAX,5
(4)MOVDS,1000H
(5)PUSHCH
(6)POPCS
(7)ADDES,AX
(8)MOVSS,CS
(9)ADD[BP],DA_BYTE
(10)INC[BX]
(11)XCHGAX,1234H
(12)CMPAL,1919H
(13)SAR[BX][DI],1
(14)RCLDX,2
(15)MOVCS,AX
(16)SUB5678H,BX
(17)NOTAX,CL
(18)MOVAX,[BX][BP]
(19)ANDAX,10H[SI][DI]
(20)LEADS,318H[SI]
3.5已知(DS)=091DH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。
下列各指令或程序段分别执行后的结果如何?
(1)MOVCL,20H[BX][SI]
(2)MOV[BP][DI],CX
(3)LEABX,20H[BX][SI]
MOVAX,2[BX]
(4)LDSSI,[BX][DI]
MOV[SI],BX
(5)XCHGCX,32H[BX]
XCHG20H[BX][SI],AX
3.6如果TABLE为数据段中0032单元的符号地址,其中存放的内容为1234H,试问以下两条指令有什么区别?
指令执行完后AX寄存器的内容是什么?
MOVAX,TABLE
LEAAX,TABLE
3.7假设(CX)=0FFFFH,那么下面指令单独执行后标志寄存器的CF、AF、ZF、SF和OF分别是什么?
(如无影响用“×
”表示)
(1)SUBCX,0FFFFH
(2)MOVCX,BX
(3)INCCX
3.8读程序题。
(1)已知(DS)=1234H,(SI)=124H,(12464H)=30ABH,(12484H)=464H。
LEASI,[SI]
MOVAX,[SI]
MOV[SI+22H],1200H
LDSSI,[SI+20H]
ADDAX,SI
上述程序段执行后:
(DS)=________,(SI)=________,(AX)=________。
(2)已知(BX)=6035H,(CX)=0F0FH。
ORBH,CH
ANDBL,CL
NEGBL
NOTBH
(BH)=________,(BL)=________。
(3)已知(AX)=0FF60H,CF=1。
MOVDX,96
XORDH,0FFH
SBBAX,DX
(AX)=________,CF=________。
(4)已知(AX)=0A65CH,(CX)=0F002H。
ROLAX,CL
ORAH,CH
RCRAX,CL
(5)已知(AX)=0FFAAH,CF=1。
MOVCX,0ABH
ORCX,0FF00H
SUBAX,CX
3.9试根据以下要求写出相应的汇编语言指令或指令序列。
(1)将DH的低三位清0,而其他位保持不变。
(2)将DI的高5位置1,而其他位保持不变。
(3)将AX的第0~3位置1,第7~9位取反,第13~15位清0,其他位保持不变。
(4)把标志寄存器中的IF位置1。
(5)由寄存器AX、DX组成一个32位带符号数(DX中存放高16位),试求这个数的负数。
(6)现有3个字节存储单元A、B、C,在不使用ADD和ADC指令的情况下实现:
(A)+(B)=>
(C)。
(7)用一条指令将CX中的整数变为奇数,如果原来已是奇数,则CX中数据保持不变,如果原来是偶数,则(CX)+1形成奇数。
(8)用一条指令将CX中的整数变为偶数,如果原来已是偶数,则CX中数据保持不变,如果原来是奇数,则(CX)-1形成偶数。
3.10给出下列指令的机器目标代码。
(1)MOVBL,12H[SI]
(2)MOVES:
12H[SI],BL
(3)ADDWORDPTR0ABH[BP][DI],1234H
(4)SALDX,1
(4)RCLBYTEPTR10H[BX],CL
(5)NOTDI
(6)STC
(7)POPDS
(8)PUSHCX
习题四
4.1设数据段数据定义如下:
DATASEGMENT
NUMBER1DW2008H
NUMBER2DW15DUP(2006H)
STRING1DB‘Howdoyoudo?
$’
BUFDB10HDUP(1,2DUP
(2))
DATAENDS
下面几条MOV指令单独执行后,目的寄存器CX中的内容发是什么?
(1)MOVCX,NUMBER1
(2)MOVCX,NUMBER2
(3)MOVCX,TYPENUMBER1
(4)MOVCX,TYPESTRING1
(5)MOVCX,LENGTHNUMBER2
(6)MOVCX,LENGTHSTRING1
(7)MOVCX,SIZENUMBER2
(8)MOVCX,SIZEBUF
4.2按下面的要求写出相应的数据定义语句。
(1)定义一个字节区域,第一个字节的值为20,其后跟20个初值为0的连续字节;
(2)定义一个以0为结束符的字符串,其初值为:
Thecourseiseasy;
(3)定义2008个字,其初值为任意值;
(4)定义一个双字变量,其初值为6571H。
4.3已知下列程序段:
DATASEGMENT
DB1DB12H,34H,0,56H
DW1DW78H,90H,0AB46H,1234H
ADR1DWDB1
ADR2DWDW1
BUFDB5DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
……
XORCX,CX
MOVCL,3
ADDADR1,CX
SUBADR2,CX
MOVBX,ADR1
MOVDI,BX
MOVSI,ADR2
MOVAL,DB1[BX]
MOVBUF[DI],AL
MOVAX,DW1[BX][SI]
MOVWORDPTRBUF,AX
CODEENDS
上述程序运行结束后,BUF中各字节单元的内容是什么?
4.4某数据段中有:
COUNT1EQU16H
COUNT2DW16H
下面两条指令有何异同?
MOVAX,COUNT1
MOVBX,COUNT2
4.5已知有下列3个等值语句:
N1EQU30
M2EQU87
P3EQU4
那么下列表达式的值各是多少?
(1)M2/N1+M2MODP3*2
(2)P3SHL4﹣2
(3)N1GTM2ANDP3LTM2(用8位二进制数表示)
(4)P3OR7
(5)N1XORP3
4.6假设数据段中有数据定义如下:
PARTNODW?
FNAMEDB16DUP(?
)
COUNTDD?
FLENGTHEQUCOUNT﹣FNAME
PLENGTHEQU$﹣PARTNO
那么经过汇编后,FLENGTH和PLENGTH的值是多少?
它们表示什么意义?
4.7假设程序中有以下的数据定义及传送指令,那么传送指令执行后各寄存器的内容分别是什么?
ORG$+10H
BUF1DW1234H,5678H
BUF2DW‘AB’
BUF3DW20DUP(0)
……
CONSTEQU2345H
MOVAL,LOWCONST
MOVAH,HIGHCONST
MOVBL,HIGH(OFFSETBUF1)
MOVBH,LOW(OFFSETBUF2)
MOVCL,LOW(OFFSETBUF3)
4.8已知有下列数据定义,根据这些数据定义完成规定的操作。
T1DB‘ABCDE’
T2DW1234H
T3DB20HDUP(?
(1)用一条MOV指令将T1的偏移地址放入DI中;
(2)用一条MOV指令将T2的段基址放入DS中;
(3)用一条MOV指令将T2的低地址单元中的内容放入DL中;
(4)用一条EQU伪指令使符号CONST的值等于数组变量T3所占的总字节数。
4.9已知有下列数据定义语句:
DA1DW‘AB’,‘CD’,‘EF’
DA2DW1234H,5678H
试用DB定义语句将它们改写成在存储器中完全相同的存储形式。
4.10已知有下列数据定义语句:
X1DB3,5
X2DW123,456
执行下列MOV指令后,各寄存器的值分别是多少?
(1)MOVAX,WORDPTRX1
(2)MOVBL,BYTEPTRX2
(3)MOVBH,X1+1
(4)MOVCX,X2+2
(5)MOVDL,BYTEPTRX2+1
(6)MOVDH,BYTEPTRX2+2
4.11下面各题中语句有语法错误,试分别用两种方法修改使它们在汇编时能够通过:
(1)M1DW5060H
MOVBL,M1
(2)M2EQU10H
MOVM2,AL
(3)M3DW‘ABCD’
(4)M4DB1234
(5)DATA1SEGMENT
DA1DW1234H
DATA1ENDS
DATA2SEGMENT
DA2DW5678H
DATA2ENDS
CODESEGMENT
ASSUMECS:
DATA1
……
MOVBX,DA2
CODEENDS
4.12设已知数据段:
DA1DBXX,XX
DA2DBXX,XX
ADRRDWDA1,DA2
为使ADRR+2字存储单元中存放内容为0022H,上面的方框中应填写什么语句?
4.13下面的指令执行后,寄存器DS和SI的内容分别是多少?
ADDRDW1234H,5678H,0ABCDH
LDSSI,ADDR+1
4.14设某数据段为:
ORG20H
NUM1=8
NUM2=NUM1+10H
DA1DB‘IBMPC’
DB0AH,0DH
CONTEQU$﹣DA1
DA2DW‘IB’,‘M’,‘PC’,0A0DH
上述数据段定义后,DA1和DA2的偏移量、CONT的值和DA2+5字节单元的内容分别是多少?
4.15设某数据段为:
ORG34H
NUM=
DA1DW10H,$+20H,30H,$+40H
DA2DWDA1+NUM+10H
上述语句汇编后,$+20H和$+40H中的$分别是多少?
为使DA2字单元中的值为50H,等号语句NUM后的空白处应填什么?
4.16汇编语言源程序是如何装入CS、DS、SS和ES的?
4.17汇编语言源程序在运行结束后为什么要返回操作系统?
它们是如何返回的?
习题五
5.1程序的基本结构有_______、_______与_______三种。
5.2下面的程序段完执行后,AX,DX与BL的内容为多少?
MOVAX,6540H
MOVDX,3210H
MOVCL,04
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
5.3编写分支程序,在进行条件判断前,可用指令改变标志寄存器的某些位从而形成条件,下面的指令中不能形成条件的指令是_______。
(A)XOR(B)ADD
(C)TEST(D)MOV
5.4在语法正确的情况下,指令JMPFARPTRLABEL1属于_______。
(A)段内直接寻址(B)段内间接寻址
(C)段间直接寻址(D)段间间接寻址
5.5指令JMPBX转移的目标地址的偏移量为_______。
(A)IP+BX的内容(B)BX的内容
(C)BX所指向的存储单元的内容(D)IP-BX的内容
5.6下面的程序段条件转移语句发生跳转时,(AL)=________。
CMPAL,0FBH
JNLNEXT
(A)80H(B)8FH
(C)0F0H(D)0FFH
5.7设标识符DONE是程序中某指令语句的标号,与JMP指令同在一个逻辑段内,下列的哪个程序段不能够转移到标号DONE处的语句执行。
(A)JMPDONE
(B)MOVBX,OFFSETDONE
JMPBX
(C)MOVBX,DONE
(D)LEABX,DONE
JMPDONE
5.8下面的程序运行后,(AL)=_______,CF=_______。
MOVCL,8
MOVAL,0
NOTAL
ROLAL,CL
CMPAL,0FFH
JZNEXT
NEXT:
……
5.9在下面的程序段中,“DECCX”指令执行了_______次。
MOVCX,6
JCXZNEXT
L1:
DECCX
JNZL1
….
(A)0(B)5
(C)6(D)7
5.10试分三种情况说明,当NUM字节单元中数据是什么情况时,TEMP字节单元分别是多少?
NUMDB?
TEMPDB?
MOVAL,NUM
TESTAL,99H
JNERES
ANDAL,99H
JMPEND0
RES:
JSNE
INCAL
JMPEND0
NE:
DECAL
END0:
MOVTEMP,AL
5.11循环体包括哪几部分?
(A)初始化部分、工作部分、控制部分、修改部分、结束处理部分
(B)工作部分、修改部分、控制部分
(C)工作部分
(D)初始化部分、工作部分
5.12循环控制指令LOOPNZ的转移条件是_______。
(A)(CX)≠0并且ZF=0(B)(CX)≠0或者ZF=0
(C)(CX)=0并且ZF=0(D)(CX)≠0并且ZF=1
5.13下面的程序段执行后,BUF1的前5个字节单元内容分别是多少?
DA1DW123H,456H,0AB00H
DA2DB12H,34H,56H,0ABH
DB$-DA2
BUF1DB10HDUP(1,2,3)
BUF2DB10H,20H,30H
MOVSI,OFFSETDA1
MOVDI,OFFSETBUF1
MOVCX,5
LOP:
MOVAL,