《汇编语言程序设计》作业习题.docx
《《汇编语言程序设计》作业习题.docx》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》作业习题.docx(29页珍藏版)》请在冰豆网上搜索。
《汇编语言程序设计》作业习题
《汇编语言程序设计》作业习题
第1章汇编语言基础知识
习题
1.1什么是汇编语言?
汇编语言的特点是什么?
1.2把下列十进制数转换成二进制数、八进制数、十六进制数。
①127②1021③0.875④6.25
1.3把下列二进制数转换成十进制数。
1.4
①1001.11②101011.10011③111.011④1011.1
1.4把下列八进制数转换成十进制数。
①573.06②75.23③431.7④123.45
1.5把下列十六进制数转换成十进制数。
①0D5.F4②8BA.7C③0B2E.3A④6EC.2D
1.6把下列英文单词转换成ASCII编码的字符串。
①Upper②Blow③Computer④What
1.7求下列带符号十进制数的8位基2码补码。
①+127②−2③−128④+2
1.8求下列带符号十进制数的16位基2码补码。
①+628②−9③−1234④+3249
1.9下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
①68+(―53)②68―53③68―(―53)④(―68)―53
1.10汉字在输入、存储、输出过程中所使用的汉字编码是否一样?
使用的是什么编码?
第2章IBM-PC系统结构
习题
2.1什么是微型计算机?
微型计算机主要由哪几部分组成?
其主要功能是什么?
2.28086/8088CPU由哪两部分组成?
它们的主要功能是什么?
2.38086/8088CPU有哪些寄存器?
各有什么用途?
2.48086/8088CPU哪些寄存器可以用来指示存储器地址?
2.5标志寄存器中有哪些状态标志和控制标志?
它们每一位所表示的含义是什么?
2.6有两个16位数3A4BH和10EFH分别存放在2000H和2004H存储单元中,请用图表示出它们在存储器里的存放情况。
2.7一个存储单元的物理地址、段地址、偏移地址三者之间有何关系?
2.8在DEBUG程序中,一条指令语句表示为2000:
0030MOVAL,8。
请问:
段地址、偏移地址和物理地址分别为多少?
存放段地址和偏移地址的寄存器是哪两个?
第3章_80868088寻址方式和指令系统寻址方式和指令系统
习题
一、填空
3.1指出下列指令源操作数的寻址方式:
MOVAX,ARRAY[SI];
MOVAX,ES:
[BX];
MOVAX,[100];
MOVAX,[BX+DI];
MOVAX,BX;
MOVAX,2000H;
MOVAX,ARRAY[BX][SI];
MOVAX,[DI+20H];
3.2假设(SP)=100H,(SS)=1000H,执行PUSHBP指令后,栈顶的物理地址是。
3.3段地址和偏移地址为3FFFH:
1234H,它的物理地址是,段地址和偏移地址为1000H:
000FH,它的物理地址是。
3.4若要测试AL寄存器中操作数的第0,3,4,7位是否均为0,然后根据测试结果实现条件转移,可使用指令,以产生转移条件。
这条指令执行后将影响的标志位是。
3.5现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,下列指令执行后AX寄存器的内容:
MOVAX,1200H;(AX)=
MOVAX,BX;(AX)=
MOVAX,[1200H];(AX)=
MOVAX,[BX];(AX)=
MOVAX,1100H[BX];(AX)=
MOVAX,[BX][SI];(AX)=
MOVAX,1100H[BX+SI];(AX)=
3.6设(BX)=101H,(DS)=2100H,(CS)=1900H,内存中(21101H)=0C7H,(21102H)=0FFH,(21103H)=00H,(21104H)=0F0H,执行如下指令后CS和IP寄存器的值是多少?
JMPBX;(CS)=,(IP)=
JMP[BX];(CS)=,(IP)=
JMPWORDPTR[BX+1];(CS)=,(IP)=
JMPDWORDPTR[BX];(CS)=,(IP)=
3.7试根据以下要求写出相应的汇编语言指令。
⑴把BX寄存器和DX寄存器内容相加,结果存入DX寄存器中,汇编语言指令:
;
⑵用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。
汇编语言指令:
;
⑶用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器内容相加,并把结果送回到存储器中。
汇编语言指令:
;
⑷用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。
汇编语言指令:
;
⑸把数0B5H与AL寄存器内容相加,并把结果送回AL寄存器中。
汇编语言指令:
;
3.8指令SAR可用来除2,而指令SHR可用来除2。
3.9条件转移指令的目标地址应在本条指令的下一条指令的个字节范围内。
3.10执行指令XORAX,AX的含义是和。
3.11一个有16个字的数据区,它的起始地址为70A0H:
DDF6H,那么该数据区的最后一个字单元的物理地址为H。
3.12串处理指令规定源寄存器使用,源串在段中;目的寄存器使用,目的串必须在段中。
3.13执行加法指令时,如果两个操作数的符号相同,而结果的符号与之相反,则OF=
;执行减法指令时,如果两个操作数的符号相反,而结果的符号与减数相同,则OF=。
3.14数据串传送指令执行前应做、、、
四项准备工作。
二、选择题(可多选)
3.15基址寄存器的内容、变址寄存器的内容以及指令中指定的位移量三者之和作为操作数的有效地址,它的寻址方式是。
A、直接寻址方式B、寄存器相对寻址方式
C、基址变址寻址方式D、相对基址变址寻址方式
3.16完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是。
A、MOVAL,00HB、ANDAL,00HC、XORAL,ALD、SUBAL,AL
3.17指令TESTAL,02H的含义是。
A、测试AL是否等于02HB、测试AL第二位的状态
C、测试AL第一位的状态D、将AL的第一位和02单元的各位进行测试
3.188086CPU在执行8位有符号数运算后,产生溢出是结果超出了。
A、0~255B、+128~-128C、+255~-256D、+127~-128
3.19不能改变8086程序计数指针IP的指令是。
A、RETB、PUSHAXC、CALLD、JBE
3.20不影响8086堆栈指针SP值的指令是。
A、JMPB、PUSHAXC、POPCXD、INT21H
3.218086中执行指令RET04H表示。
A、返回到04H单元B、作段间返回
C、返回到当前地址后第4个单元D、完成RET指令后SP加4
3.22下列不正确的指令是(DATA已定义)。
A、MOV4[DI],02HB、MOVBYTEPTR4[DI],02H
C、MOV4[DI],ALD、MOVDATA[DI],02H
3.23假设V1和V2是用DW定义的变量,下列指令中正确的是。
A、MOVV1,20HB、MOVV1,V2
C、MOVAL,V1D、MOV2000H,V2
3.24下列哪条指令不合法?
A、INTAX,0278HB、RORDX,CLC、CMPSBD、RET4
3.25下列指令中,有语法错误的是。
A、MOV[SI],[DI]B、INAL,DX
C、JMPWPRDPTR[BX]D、PUSHWORDPTR20[BX+SI-2]
3.26下列4条指令中,是错误的。
A、MOVDS,2000HB、ADDDX,[BP]
C、MOVAX,200D、MOVAX,ARRAY[SI+2]
3.27运算型指令的寻址和转移型指令的寻址,其不同点在于。
A、前者取操作数,后者决定程序的转移地址
B、后者取操作数,前者决定转移地址
C、两者都是取操作数
D、两者都是决定程序的转移地址
3.28下列指令中操作数在代码段中的是。
A、MOVAL,25HB、ADDBH,ALC、INCDS:
[25H]D、CMPAL,BL
3.29设(BL)=5,要使结果(BL)=0AH,应执行指令是。
A、ANDBL,0FHB、NOTBLC、XORBL,0FHD、ORBL,0FH
3.30指令JMPDWORDPTR[BX][SI]属于寻址。
A、寄存器间接寻址B、相对基址变址寻址
C、段内转移直接寻址D、段间转移间接寻址
3.31在下列指令中,指令的执行会影响条件码的CF位。
A、JMPNEXTB、JCNEXTC、INCBXD、SHLAX,1
3.32将累加器AX的内容清零的正确指令是。
A、ORAX,0B、XORAX,AXC、TESTAX,AXD、CMPAX,AX
三、简答题
3.33PUSH和POP指令有什么特点?
3.34算术移位指令和逻辑移位指令有什么不同?
3.35串处理指令有什么特殊规定?
简述REPZCMPSB指令的执行过程。
3.36完成下列操作,选用什么指令?
⑴将AX的内容减去0520H和上次运算的借位;
⑵将变量名TABL的段地址送AX;
3.37条件转移指令和无条件转移指令有什么不同?
第4章80868088汇编语言(格式)
习题
一、填空题
4.1 有关操作数的伪指令中,算术运算符有 ,逻辑运算符有 ,关系操作符有 ,数值运算符有 ,属性操作符 。
4.2 下列两个语句的区别在于 , 。
X1EQU1000H
X2=1000H
4.3假设(DS)=3000H
ORG3100H
TABLEDB10,3*4,10H
ADDRESSDDTABLE
ARRAYDW2DUP(675AH,?
)
写出下列各单元的内容。
(3100H)= (3101H)= (3102H)=
(3103H)= (3104H)= (3105H)=
(3106H)= (3107H)= (3108H)=
(3109H)= (310AH)= (310BH)=
(310CH)= (310DH)= (310EH)=
4.4对于下面的数据定义,各条MOV指令单独执行后,请写出相关寄存器的内容。
FLDBDB?
TABLEADW20DUP(?
)
TABLEBDB'ABCD'
(1)MOVAX,TYPEFLDB;(AX)=
(2)MOVAX,TYPETABLEA;(AX)=
(3)MOVCX,LENGTHTABLEA;(CX)=
(4)MOVDX,SIZETABLEA;(DX)=
(5)MOVCX,LENGTHTABLEB;(CX)=
4.5设X1、X2是两个已经赋值的变量,指令ANDAX,X1ANDX2中,两个AND的区别是 、 。
4.6对于指令MOVBX,((XLT10H)AND40H)OR((XGE10H)AND50H),当X<10H时,汇编结果为MOVBX, ,否则汇编结果为MOVBX, 。
4.7数据定义语句
BUF1DW?
BUF2EQUBYTEPTRBUF1
当汇编后,PTR类型操作符使BUF2具有与BUF1相同的 和 ,但类型为 。
4.8 是过程定义结束伪指令,与 配套使用。
是段定义结束伪指令,与 配套使用, 是一个源模块汇编结束伪指令。
4.9已知指令ARRAYDB2DUP(1DUP(?
)),则该指令分配 字节单元,指令MOVAX,LENGTHARRAY执行后,AX= ;指令MOVAX,SIZEARRAY执行后,AX= 。
4.10汇编程序产生二进制的目标文件OBJ,但OBJ还必须使用 转换成可直接执行的EXE文件。
4.11在指令和伪指令中可直接使用“$”表示地址计数器的当前值,ORG伪指令后给定的数值应是一个 。
4.12DB伪指令以 为单位分配存储;DD伪指令以 为单位分配存储。
故如下数据定义:
XDB4DUP
(2),2
COUNTEQU10
YDDCOUNTDUP(?
)
为变量X分配 个字节存储;为变量Y分配 个字节存储。
4.13数据段中有以下定义:
ARRAY1EQU20H
ARRAY2DW20H
指出下面两条指令的源操作数寻址方式:
MOVAX,ARRAY1;寻址方式
MOVAX,ARRAY2;寻址方式
4.14根据下面的指令序列,CX寄存器中的值应该是 。
X1DW‘AB’
X2DB16DUP(?
)
CNTEQU$-X1
…
MOVCX,CNT
4.15假设ES段中有一个字符串′12FG3LM5C′,其名为ARRAY,下面的程序段
CLD
LEADI,ES:
ARRAY
MOVAL,′G′
MOVCX,9
REPNESCASB
执行后CX的值是
二、选择题
4.16表示源程序结束伪操作的格式为。
A、ENDS[LABEL]B、END[LABEL]C、ENDSD、END
4.17一般地,我们将计算机指令的集合称为。
A、机器指令B、伪指令C、宏指令D、语句
4.18在汇编语言程序设计中,伪指令OFFSET表达的含义是回送变量或标号的。
A、段地址值B、偏移地址值C、物理地址值D、操作数
4.19若定义DATDW‘A’,则DAT和DAT+1两个相邻的内存单元中存放的数据是 。
A、00H41HB、41H00HC、XXH41HD、41HXXH
(选项C、D中的XX表示任意数据)
4.20若定义DATDW‘AB’,则DAT和DAT+1两个相邻的内存单元中存放的数据是 。
A、42H41HB、41H42HC、62H61HD、61H62H
4.21表示一条指令的存储单元的符号地址称为 。
A、标号B、变量 C、偏移量D、类型
4.22现用数据定义语句定义数据:
BUFDB4DUP(0,2DUP(1,0)),定义后存储单元中有数据0100H的字单元个数是 。
A、4B、3 C、8D、12
4.23下列语句中有语法错误的语句是 。
A、DB45HB、DW0ABCDHC、DW‘ABCD’D、DD‘AB’
三、判断题
4.24MOVBYTEPTR[BX],1000;
4.25JMP FARPTRLAB;LAB是标号;
4.25JLE FARPTRLAB;LAB是标号;
4.27JMPDWORDPTR[BX+SI];
4.28PUSHOFFSETVAL;VAL是DB定义的变量;
4.29汇编语言程序中,符号地址和标号必须先定义后使用;
4.30在生成的可执行文件中,伪指令是不存在的;
4.31语句X=X-Y执行后按照减法规则影响标志位;
4.32ADDAX,BX与ADCAX,BX得到的结果总是不同;
4.33JNZAAA;
第5章基本程序设计
习题
5.1简述编制一个汇编语言程序的步骤。
5.2简述判断汇编语言程序质量的标准。
5.3编写程序,将DATA_NUM起的4个压缩BCD码转换成十六进制数,并存放在DATA_NUM下面相邻字节中。
5.4试编写一程序,用查表法将一位十六进制数转换成与之对应的ASCII码。
程序的数据段如下:
DATASEGMENT
TABDB30H,31H,32H,33H,34H,35H,36H,37H
DB38H,39H,41H,42H,43H,44H,45H,46H
HEXDB6
ASCDB?
DATAENDS
5.5试编程求解表达式S=(23000-(X*Y+Z))/Z,其中X=600,Y=25,Z=-2000。
第5章输入输出程序设计
习题
6.1用指令实现如下功能:
(1)将一个字节输出到端口43H。
(2)将一个字节从48H端口输入。
(3)将一个在BUF单元的字节输出到端口2F0H。
(4)将一个字节从端口30H输入,存到内存ABC单元。
(5)将一个字从020FH单元输出。
6.2中断处理程序的典型结构包括哪几部分?
6.3增加一个新的软中断,应完成哪些操作?
6.4CPU与外设问的数据传送方式有哪几种?
它们各有什么特点?
6.5类型号1DH的中断向量在存储器的哪些单元里?
6.6内存单元INT9开始放有一个中断服务程序,它所对应的中断类型号为9。
试编写建立这一中断向量的程序段。
6.7根据本章讲述的内容,试分析下面一段程序实现的功能。
MOVAX,0
MOVES,AX
MOVDI,36H*4
MOVAX,OFFSETINTBUF
STOSW
MOVAX,CS
STOSW
第6章80868088循环程序设计
习题
一、填空
7.1下列程序完成的是将16位二进制数转换成4位16进制数的ASCII码,请完善程序。
DATASEGMENT
XDW1234H
CHARDB4DUP(0)
DATAENDS
…
LEADI,CHAR
MOVCH,4
MOVBX,X
L1:
MOVCL,4
MOVAL,BL
ANDAL,0FH
CMPAL,9
ADDAL,7
L2:
ADDAL,30H
MOV[DI],AL
INCDI
DECCH
HLT
7.2以ARRAY为起始地址的字节表中存放着M个带符号数,找出其中的最大值和最小值,并分别送入到AH和AL中,请完善下列程序段。
…
MOVSI,OFFSETARRAY
MOVCX,M
CLD
MOVBH,[SI]
MOVBL,BH
L1:
CMPAL,BH
JLEL2
MOVBH,AL
L2:
CMPAL,BL
JGEL3
MOVBL,AL
L3:
MOVAX,BX
HLT
7.3阅读下列程序段,并完善程序和回答问题。
XORAX,AX
MOVBX,1
LOP:
ADDAX,BX
INCBX
INCBX
LOOPLOP
HLT
程序执行到HLT时,(AX)=,(BX)=。
A、9B、10C、11D、20E、25F、36
7.4以STR1为起始地址的字节存储单元中存放着一个字符串,请统计该字符串中的每个字符含有“1”的个数,并将结果保存到以STR2为起始地址的个字节存储单元中。
请完善程序。
STR1DB'FABCDFGHYTRJHKL9'
MEQU$-STR1
STR2DBMDUP(0)
…
LEASI,STR1
LEADI,STR2
MOVCX,M
L1:
MOVAL,[SI]
MOVDL,0
L2:
CMPAL,0
SHRAL,1
JNCL3
L3:
JMPL2
L4:
MOV[DI],DL
INCSI
INCDI
HLT
二、编程题
7.5试编制一程序,要求从键盘上接收一个4位的16进制数,并在屏幕上显示与它等值的二进制数。
7.6试编制一程序,将一个包含有20个字数据的数组ARRAY分成两个数组,正数数组M和负数数组N。
7.7试编制一程序,求出首地址为DATA的100个字数组中的最小偶数,并将它存放在BX中。
7.8将30名学生的成绩存入以GRADE为首地址的字节数组中。
另一个数组RANK为30名学生的名次表。
编写一程序,根据GRADE中的学生成绩,将学生的名次填入RANK数组中。
7.9已知数组A包含15个互不相等的整数,数组B中包含20个互不相等的整数。
试编一程序,将即在A中又在B中的整数存入数组C中。
7.10从键盘输入一系列字符串(以回车符结束),按字母、数字和其它字符分类计数,最后显示出这三类的计数结果。
第7章8086、8088循环分支设计
习题
一、填空题
8.1下面的程序是将10个8位的无符号数按递减次序排序。
请选择正确的答案将程序填充完整。
DATASEGMENT
ARRAYDB05H,78H,0FFH,7BH,00H
DB8CH,20H,54H,7DH,19H
NDB9
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
START:
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
LAB1:
LEASI,ARRAY
MOVBL,0
MOVCX,N
AGAIN:
MOVAL,[SI]
INCSI
CMPAL,[SI]
(1)
MOVAH,[SI]
MOV[SI],AL
MOV[SI-1],AH
MOVBL,