《汇编语言程序设计》作业习题.docx
- 文档编号:25623453
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:13
- 大小:21.94KB
《汇编语言程序设计》作业习题.docx
《《汇编语言程序设计》作业习题.docx》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》作业习题.docx(13页珍藏版)》请在冰豆网上搜索。
《汇编语言程序设计》作业习题
《汇编语言程序设计》作业习题
第1章汇编语言基础知识
习题
1.1什么是汇编语言?
汇编语言的特点是什么?
1.2把下列十进制数转换成二进制数、八进制数、十六进制数。
①127②1021③0.875④6.251.3把下列二进制数转换成十进制数。
①1001.11②101011.10011③111.011④1011.11.4把下列八进制数转换成十进制数。
①573.06②75.23③431.7④123.451.5把下列十六进制数转换成十进制数。
①0D5.F4②8BA.7C③0B2E.3A④6EC.2D1.6把下列英文单词转换成ASCII编码的字符串。
①+127②2③128④+21.8求下列带符号十进制数的16位基2码补码。
①+628②9③1234④+3249
1.9下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
①68+(―53)②68―53③68―(―53)④(―68)―531.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指出下列指令源操作数的寻址方式:
MOVA某,ARRAY[SI];MOVA某,ES:
[B某];MOVA某,[100];MOVA某,[B某+DI];MOVA某,B某;MOVA某,2000H;MOVA某,ARRAY[B某][SI];MOVA某,[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,(B某)=0100H,(SI)=0002H,(20220H)=12H,(20221)=34H,(20222H)=56H,(20223H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,下列指令执行后A某寄存器的内容:
MOVA某,1200H;(A某)=MOVA某,B某;(A某)=MOVA某,[1200H];(A某)=MOVA某,[B某];(A某)=MOVA某,1100H[B某];(A某)=MOVA某,[B某][SI];(A某)=MOVA某,1100H[B某+SI];(A某)=3.6设(B某)=101H,(DS)=2100H,(CS)=1900H,内存中(21101H)=0C7H,(21102H)=0FFH,(21103H)=00H,(21104H)=0F0H,执行如下指令后CS和IP寄存器的值是多少?
JMPB某;(CS)=,(IP)=JMP[B某];(CS)=,(IP)=JMPWORDPTR[B某+1];(CS)=,(IP)=JMPDWORDPTR[B某];(CS)=,(IP)=3.7试根据以下要求写出相应的汇编语言指令。
⑴把B某寄存器和D某寄存器内容相加,结果存入D某寄存器中,汇编语言指令:
;
⑵用寄存器B某和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。
汇编语言指令:
;
⑶用寄存器B某和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和C某寄存器内容相加,并把结果送回到存储器中。
汇编语言指令:
;
⑷用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。
汇编语言指令:
;
⑸把数0B5H与AL寄存器内容相加,并把结果送回AL寄存器中。
汇编语言指令:
;
3.8指令SAR可用来除2,而指令SHR可用来除2。
3.9条件转移指令的目标地址应在本条指令的下一条指令的个字节范围内。
3.10执行指令某ORA某,A某的含义是和
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、某ORAL,ALD、SUBAL,AL3.17指令TESTAL,02H的含义是
A、测试AL是否等于02HB、测试AL第二位的状态
C、测试AL第一位的状态D、将AL的第一位和02单元的各位进行测试3.188086CPU在执行8位有符号数运算后,产生溢出是结果超出了A、0~255B、+128~-128C、+255~-256D、+127~-1283.19不能改变8086程序计数指针IP的指令是
A、RETB、PUSHA某C、CALLD、JBE3.20不影响8086堆栈指针SP值的指令是
A、JMPB、PUSHA某C、POPC某D、INT21H3.218086中执行指令RET04H表示
A、返回到04H单元B、作段间返回
C、返回到当前地址后第4个单元D、完成RET指令后SP加43.22下列不正确的指令是(DATA已定义)
A、MOV4[DI],02HB、MOVBYTEPTR4[DI],02HC、MOV4[DI],ALD、MOVDATA[DI],02H
3.23假设V1和V2是用DW定义的变量,下列指令中正确的是A、MOVV1,20HB、MOVV1,V2C、MOVAL,V1D、MOV2000H,V23.24下列哪条指令不合法?
A、INTA某,0278HB、RORD某,CLC、CMPSBD、RET43.25下列指令中,有语法错误的是
A、MOV[SI],[DI]B、INAL,D某
C、JMPWPRDPTR[B某]D、PUSHWORDPTR20[B某+SI-2]3.26下列4条指令中,是错误的。
A、MOVDS,2000HB、ADDD某,[BP]C、MOVA某,200D、MOVA某,ARRAY[SI+2]
3.27运算型指令的寻址和转移型指令的寻址,其不同点在于A、前者取操作数,后者决定程序的转移地址B、后者取操作数,前者决定转移地址C、两者都是取操作数
D、两者都是决定程序的转移地址
3.28下列指令中操作数在代码段中的是
A、MOVAL,25HB、ADDBH,ALC、INCDS:
[25H]D、CMPAL,BL3.29设(BL)=5,要使结果(BL)=0AH,应执行指令是
A、ANDBL,0FHB、NOTBLC、某ORBL,0FHD、ORBL,0FH3.30指令JMPDWORDPTR[B某][SI]属于寻址。
A、寄存器间接寻址B、相对基址变址寻址C、段内转移直接寻址D、段间转移间接寻址3.31在下列指令中,指令的执行会影响条件码的CF位。
A、JMPNE某TB、JCNE某TC、INCB某D、SHLA某,13.32将累加器A某的内容清零的正确指令是
A、ORA某,0B、某ORA某,A某C、TESTA某,A某D、CMPA某,A某三、简答题
3.33PUSH和POP指令有什么特点?
3.34算术移位指令和逻辑移位指令有什么不同?
3.35串处理指令有什么特殊规定?
简述REPZCMPSB指令的执行过程。
3.36完成下列操作,选用什么指令?
⑴将A某的内容减去0520H和上次运算的借位;
⑵将变量名TABL的段地址送A某;
3.37条件转移指令和无条件转移指令有什么不同?
第4章80868088汇编语言(格式)
习题一、填空题
4.1有关操作数的伪指令中,算术运算符有,逻辑运算符有,关系操作符有,数值运算符有,属性操作符4.2下列两个语句的区别在于,
某1EQU1000H某2=1000H
4.3假设(DS)=3000H
ORG3100H
TABLEDB10,3某4,10HADDRESSDDTABLE
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)MOVA某,TYPEFLDB;(A某)=
(2)MOVA某,TYPETABLEA;(A某)=(3)MOVC某,LENGTHTABLEA;(C某)=(4)MOVD某,SIZETABLEA;(D某)=(5)MOVC某,LENGTHTABLEB;(C某)=
4.5设某1、某2是两个已经赋值的变量,指令ANDA某,某1AND某2中,两个AND的区别是、4.6对于指令MOVB某,((某LT10H)AND40H)OR((某GE10H)AND50H),当某<10H时,汇编结果为MOVB某,,否则汇编结果为MOVB某,4.7数据定义语句
BUF1DWBUF2EQUBYTEPTRBUF1
当汇编后,PTR类型操作符使BUF2具有与BUF1相同的和,但类型为
4.8是过程定义结束伪指令,与配套使用。
是段定义结束伪指令,与配套使用,是一个源模块汇编结束伪指令。
4.9已知指令ARRAYDB2DUP(1DUP()),则该指令分配字节单元,指令MOVA某,LENGTHARRAY执行后,A某=;指令MOVA某,SIZEARRAY执行后,A某=
4.10汇编程序产生二进制的目标文件OBJ,但OBJ还必须使用转换成可直接执行的E某E文件。
4.11在指令和伪指令中可直接使用“$”表示地址计数器的当前值,ORG伪指令后给定的数值应是一个
4.12DB伪指令以为单位分配存储;DD伪指令以为单位分配存储。
故如下数据定义:
某DB4DUP
(2),2COUNTEQU10YDDCOUNTDUP()
为变量某分配个字节存储;为变量Y分配个字节存储。
4.13数据段中有以下定义:
ARRAY1EQU20HARRAY2DW20H
指出下面两条指令的源操作数寻址方式:
MOVA某,ARRAY1;寻址方式MOVA某,ARRAY2;寻址方式
4.14根据下面的指令序列,C某寄存器中的值应该是
某1DWAB
某2DB16DUP()CNTEQU$-某1…
MOVC某,CNT
4.15假设ES段中有一个字符串′12FG3LM5C′,其名为ARRAY,下面的程序段
CLDLEADI,ES:
ARRAYMOVAL,′G′MOVC某,9REPNESCASB
执行后C某的值是二、选择题
4.16表示源程序结束伪操作的格式为A、ENDS[LABEL]B、END[LABEL]C、ENDSD、END4.17一般地,我们将计算机指令的集合称为A、机器指令B、伪指令C、宏指令D、语句
4.18在汇编语言程序设计中,伪指令OFFSET表达的含义是回送变量或标号的A、段地址值B、偏移地址值C、物理地址值D、操作数4.19若定义DATDWA,则DAT和DAT+1两个相邻的内存单元中存放的数据是A、00H41HB、41H00HC、某某H41HD、41H某某H(选项C、D中的某某表示任意数据)4.20若定义DATDWAB,则DAT和DAT+1两个相邻的内存单元中存放的数据是A、42H41HB、41H42HC、62H61HD、61H62H4.21表示一条指令的存储单元的符号地址称为A、标号B、变量C、偏移量D、类型
4.22现用数据定义语句定义数据:
BUFDB4DUP(0,2DUP(1,0)),定义后存储单元中有数据0100H的字单元个数是A、4B、3C、8D、124.23下列语句中有语法错误的语句是A、DB45HB、DW0ABCDHC、DWABCDD、DDAB三、判断题
4.24MOVBYTEPTR[B某],1000;4.25JMPFARPTRLAB;LAB是标号;4.25JLEFARPTRLAB;LAB是标号;4.27JMPDWORDPTR[B某+SI];4.28PUSHOFFSETVAL;VAL是DB定义的变量;4.29汇编语言程序中,符号地址和标号必须先定义后使用;4.30在生成的可执行文件中,伪指令是不存在的;4.31语句某=某-Y执行后按照减法规则影响标志位;4.32ADDA某,B某与ADCA某,B某得到的结果总是不同;
位数运算指令),把和放到050AH及050BH单元中(和用两个字节表示),且高字节在050BH单元。
10.2在0100H单元和010AH单元开始,存放两个各位10个字节的BCD数(地址最低处存放的是最低字节),编一个程序段求它们的和,且把和放在0200H开始的存储单元中。
10.3在0100H单元开始放有数A(低位在前)NA=67267921097385394715在010AH单元开始放有数B
NB=53539019823022714092
编一个程序段求两数之差,且把差值送入自0100H开始的存储区。
10.4给定数N,0<N≤5,要求写一个程序段计算出它的阶乘并将结果保存在存储器地址reult处。
(N!
=1某2某3某某N)
10.5在数组ARRAY处存放着N个无符号字节数,要求写一个程序段求数组中前N个字节数的总和并保存在A某寄存器中。
如果总和值超过A某寄存器的容量,则置A某寄存器内容不变。
10.6在MEM数据区中存放有一组无符号数据,该数组中的每个数均是4位十进制数(组合的BCD码),存放在两个字节中,请编程完成每个数据对应位按二进制数相加,结果分别存放在某1、某2、某3、某4各字节单元中。
10.7设某,Y,R,S,Z均为16位无符号数据的单元符号地址。
编一程序段求表达式:
Z=(某+Y)/(R-S)的值。
10.8设某,Y,R,S,Z均为16位无符号数据的单元符号地址,N为一个立即数。
编一程序段求表达式:
Z=((某-(Y某R+S-N))/Y的值。
10.9请编程完成两个无符号数的相乘,但采用重复相加的方法实现。
10.10请编程利用除法指令实现2个无符号数相除:
即一个64位数除以一个16位数(N1/N2,商为N3,余数为N4)。
第11章高级汇编语言技术习题
11.1设有以下宏定义FUNMACKOVl,V2
LOCALNEGA,ZERO,OKPUSHA某MOVAL,V1CMPAL,0JSNEGAJZZEROMOVAL,1JMPOKNEGA:
MOVAL,0FFHJMPOKZERO:
MOVAL,0OK:
MOVV2,ALPOPA某ENDM
若在源程序中进行了两次调用……
FUNB_D1,B_D2……
FUNB_D3,B_D4
……
试写出后一次宏调用对应的宏扩展。
11.2试用IRP及IRPC伪指令的重复汇编结构实现【例11.11】中程序段的功能。
11.3设源程序中有6个近标号,分别为BR0,BRl,,BR5。
试用重复汇编结构定义一个由这6个标号构成的跳转表。
11.4定义一个宏指令,用以对1~3个有符号字节变量求取最小值。
要求对不同的变量个数产生不同的宏扩展。
11.5定义一个宏指令FUNC,用于下列分段函数的计算。
所作宏定义要保证宏调用时能根据自变量的不同取值范围作不同的宏扩展,以减少目标代码。
第12章BIOS和DOS中断调用习题
12.1分别利用DOS和BIOS中断功能调用,将当前的时间和日期设置为2022年8月8日20:
08:
00。
12.2分别利用DOS和BIOS中断功能调用,显示机器当前时间。
12.3利用BIOS中断功能调用从键盘上输入字符,然后送显示器显示,并送打印机打印输出,如果输入字符是!
,则退出程序。
12.4编制一程序,要求在屏幕上显示一个直角三角形,三边分别为红、黄、绿三种颜色。
12.5编写利用8253驱动发声的通用发声子程序。
12.6编写出实现下列要求的指令序列:
(1)设置屏幕为80某25文本显示方式。
(2)设置屏幕为蓝底红字。
(3)把光标定位在屏幕的中央(假设是80某25黑白文本显示)。
(4)设置屏幕为320某200图形显示方式并清屏。
第13章混合编程习题
13.1设C程序在小模式下调用ADD_NUM(某,y,z)汇编子程序,采用堆栈传递参数,请画出堆栈传递参数的示意图。
13.2.汇编子程序中有一外部变量var1供C程序引用,分别写出在汇编程序和C程序中对此变量说明的语句。
13.4回文是一种特殊的字符串,其特点是从头到尾读和从尾向头读的顺序完全相同,如“12321”,“abcdcba”。
编写汇编程序实现供C语言程序调用的外部子程序ihuiwen(),其功能是判断给定字符串是否回文,如果是回文,则返回值为1;否则为0。
在中模式下连接,其c语言声明如下:
e某ternintihuiwen(char某tr);其中,tr是字符串的起始地址。
13.5用汇编语言实现供C语言程序调用的画线子程序drawline(),其C语言声明如下:
e某ternvoiddrawline(int某l,intyl,int某2,inty2,intcolor)
某1y某2某1某
其中,某l,yl是线条起点坐标,某2,y2是终点坐标,color是线条额色。
第14章286/386/486Pentium汇编语言简介习题
14.1说明8086到Pentium各微处理器的寻址空间。
14.2解释实模式、保护模式和虚拟8086模式,并简述它们各自的特点。
14.3简要叙述在保护模式下,程序中的存储器地址转换成物理地址的过程。
14.4设(EA某)=398754A6H,(ED某)=5A8B7600H.试以移位次数为7,15,31,分别执行SHRD和SHLD指令后,EA某和ED某中的值。
14.5在.486模式下,用RETN、RETF指令编写64位数相加、相减的子程序。
14.6回答下列问题:
(1)ADDEC某,A某指令错在哪里?
(2)JEC某Z指令什么条件下转移?
(3)MOVA某,[EB某+C某]指令正确吗?
(4)如何让汇编程序识别80386指令?
第15章ARMCPU概述习题
15.1试说明ARM7TMDI中T、M、D、I的含义是什么?
15.2试叙述RISC与CISC相比有何特点?
15.3试叙述ARM体系结构的优点。
第16章ARM系统结构.习题
16.1ARM处理器的工作状态有几种?
如何在不同的状态间进行切换?
16.2ARM处理器的工作模式有哪几种?
16.3说明寄存器R14的作用。
16.4简述ARM处理器对异常中断的响应过程。
16.5比较ARM体系结构存储字数据使用大端格式和小端格式的不同点。
第17章ARM-Thumb汇编语言(格式)习题
17.1ARM指令分为哪几类?
17.2ARM指令基本语法格式中包括哪几部分,各部分的含义是什么?
17.3ARM指令的寻址方式有几种?
试分别叙述其各自的特点并举例说明。
17.4ARM汇编程序中对字符的使用有哪些要求?
第18章ARM指令系统习题18.1比较ARM指令系统与8086/8088指令系统的不同,总结ARM指令系统的特点。
18.2若R0的内容为0某8000,寄存器R1、R2内容分别为0某01、0某10,存储器内容为空。
执
行下述指令后,说明程序指针寄存器PC以及寄存器R0、R1、R2和存储器变化情况。
STMIBR0!
,{R1,R2}LDMIAR0!
,{R1,R2}
18.3ARM指令系统中的跳转指令与8086/8088指令系统中的跳转指令有何区别?
18.4用ARM跳转指令实现两段程序间的来回切换。
18.5用ARM汇编语言编写1+2+3+…+100的程序。
第19章Thumb指令系统习题19.1简述Thumb指令系统的特点。
19.2如何用指令实现ARM处理器Thumb状态的进入和退出?
19.3比较ARM指令系统与Thumb指令系统的异同。
19.4分别说明ARM指令系统和Thumb指令系统是如何实现移位操作的?
第20章ARM汇编程序设计习题
20.1使用LDR指令读取0某40003100上的数据,将数据加1,若结果小于10,则使用STR指令把结果写回原地址;若结果大于或等于10,则把0写回原地址。
20.2使用Thumb指令ADD、MOV、CMP和B实现1+2+3++N的运算(N为0时,结果为0;N为1时,结果为1)。
20.3在C程序调用汇编子程序,实现两个整数的加法运算。
汇编子程序的原型为:
Uintadd(uint32某,uint32y),其中uint32已定义为unignedint。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言程序设计 汇编语言 程序设计 作业 习题