32位汇编习题.docx

上传人:b****2 文档编号:24396605 上传时间:2023-05-27 格式:DOCX 页数:94 大小:47.33KB
下载 相关 举报
32位汇编习题.docx_第1页
第1页 / 共94页
32位汇编习题.docx_第2页
第2页 / 共94页
32位汇编习题.docx_第3页
第3页 / 共94页
32位汇编习题.docx_第4页
第4页 / 共94页
32位汇编习题.docx_第5页
第5页 / 共94页
点击查看更多>>
下载资源
资源描述

32位汇编习题.docx

《32位汇编习题.docx》由会员分享,可在线阅读,更多相关《32位汇编习题.docx(94页珍藏版)》请在冰豆网上搜索。

32位汇编习题.docx

32位汇编习题

习题

说明:

英语习题全部上网,可在网上完成。

网址:

选择作业辅导

作业网址:

根据教学内容我们还自己编写了习题.

习  题1

1.Findthedecimalintegerthatisrepresentdbyeachofthese2’scomplementnumbers:

(1)FFH

(2)0H(3)F3E1H(4)B64AH

(5)2EH(6)10H(7)1FH(8)ABH

2.FindtheBCDrepresentationofeachofthefollowingdecimalnumbers:

(1)12

(2)24(3)68(4)127

(5)128(6)255(7)1234(8)2458

3.Findtheheximalrepresentationofeachofthefollowingbinarynumber.

(1)10101101b

(2)1001101001b(3)10b(4)11110b

(5)111110b(6)0101011101b(7)110100101b(8)10000101b

4.FindthedecimalnumberthatisrepresentedbyeachoftheseBCDnumber.

(1)10010001 

(2)10001001 (3)00110110 (4)10010000

(5)00001000 (6)10010111 (7)10000001 (8)00000010

5.Findthebyte-length2’scomplementrepresentationofeachofthefollowingdecimalnumbers:

(1)0

(2)127(3)127(4)57

(5)126(6)126(7)128(8)11947

6.Findtheword-length2’scomplementrepresentationofeachofthefollowingdecimalnumbers:

(1)1

(2)10(3)845(5)923

(6)100(7)15000

7.Findthedoubleword-length2’scomplementrepresentationofeachofthefollowingdecimalnumbers:

(1)1

(2)10(3)23(5)100

8.Findthesigneddecimalintegerthatisrepresentdbyeachofthese2’scomplementnumbers:

(1)B64AH

(2)F3E1H(3)6F20H(4)00E1H

9.Findthesigneddecimalintegerthatisrepresentdbyeachofthese2’scomplementnumbers:

(1)1000B64AH

(2)98C2417DH(3)FFFFFE03H(4)0000F3E1H10.Completethefollowingcaculations:

(1)1011+1001

(2)1011-1001(3)1011×1001

(4)10111000÷1001(5)10111001(6)10111001

(7)~1011(8)10111001

11.Findtherangeofdecimalintegersthatcanbestoredin2’scomplementforminabyte.

12.Findtherangeofdecimalintegersthatcanbestoredin2’scomplementforminadoubleword.

13.数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?

ASCII码为0dH、0aH对应的是什么字符?

14.计算机中有一个“01100001”编码,如果把它认为是无符号数,它是十进制的什么数?

如果认为它是BCD码,则表示什么数?

又如果它是某个ASCII码,则代表哪个字符?

15.Whatisoverflow?

Whatiscarry?

What’sthedifferencebetweenthem?

16.Determinewhetheroverfloworcarryoccurs。

(1)003FH+02A4H

(2)1B48H+39E1H(3)6C34H+5028H

(4)7FFEH+0002H(5)FF07H+06BDH(6)2A44H+D9CCH

(7)FFE3H+FC70H(8)FE00H+FD2DH(9)FFF1H+8005H

(10)8ADCH+EC78H(11)9E58HEBBCH(12)EBBCH9458H

(13)EBBCH791CH(14)791CH–EBBCH

习  题2

1.罗列IA-32CPU的8位,16位和32位通用寄存器,并说明各自的作用。

2.什么是标志,它有什么用途?

状态标志和控制标志有什么区别?

画出标志寄存器EFLAGS,说明各个标志的位置和含义。

3.字和双字在存储器中如何存放,什么是“小端方式”?

对字和双字存储单元,什么是它们的对齐地址?

为什么要对齐地址?

4.SupposethatyouhaveanIntel8086.Findthefive-hex-digitaddressthatcorrespondstoeachofthesesegment:

offsetpairs:

(1)FFFH:

0

(2)40H:

17H(3)2000H:

4500H(4)B821H:

4567H

5.实地址模式和保护模式模式下段寄存器的内容有什么区别?

6.什么是段选择器?

什么是段描述符?

什么是描述符表?

它们之间有什么关系?

7.存储器模型和处理器的操作模式有什么关系?

8.数据的默认段是哪个,是否允许其他段存放数据?

如果允许,如何实现,有什么要求?

9.HowmanybytesofmemoryarethereinPCbasedIA-32CPU?

10.什么是端口?

如何编址端口?

习  题3

1.伪指令语句与硬指令语句的本质区别是什么?

伪指令有什么主要作用?

2.什么是标识符,汇编程序中标识符怎样组成?

3.什么是保留字,汇编语言的保留字有哪些类型,并举例说明。

4.Nameanddescribethethreetypesofassemblylanguagestatements.

5.汇编语言程序的开发有哪4个步骤?

分别利用什么程序完成、产生什么输出文件?

6.区分下列概念:

(1)变量和标号;

(2)数值表达式和地址表达式;(3)符号常量和字符串常量。

7.画图说明下列语句分配的存储空间及初始化的数据值:

(1)byte_varbyte’ABC’,10,10h,’EF’,3dup(-1,?

3dup(4))

(2)word_varword10h,-5,’EF’,3dup(?

8.请设置一个数据段mydataseg,按照如下要求定义变量:

(1)my1b为字符串变量:

PersonalComputer

(2)my2b为用十进制数表示的字节变量:

20

(3)my3b为用十六进制数表示的字节变量:

20

(4)my4b为用二进制数表示的字节变量:

20

(5)my5w为20个未赋值的字变量

(6)my6c为100的常量

(7)my7c表示字符串:

PersonalComputer

9.变量和标号有什么属性?

10.MASM定义了哪7种存储模式?

TINY和SMALL模式创建什么类型(EXE或COM)程序?

设计32位应用程序应该采用什么模式?

11.分别写出实模式和保护模式下的程序格式框架。

12.设在某个程序中有如下段定义,请画图说明内存空间的分配以及内容。

.data

ORG100h

VARWWORD1234h,5678h

VARBBYTE3,4

AGLIN4

VARDDWORD12345678h

EVEN

BUFFBYTE10DUP(?

MESSBYTE’HELLO’

MESS_VARB_OFFSETDWORDOFFSETVARB+OFFSETMESS

VAR_TYEPBYTETYPEBUFF+TYPEMESS+TYPEVARD

VAR_SIZEBYTESIZEVARW+SIZEBUFF+SIZEMESS

VAR_LENGTHBYTELENTHVARW+LENTHVARD

BUFF_LSBYTELENTHBUFF+SIZEVARW

BEGIN_TYPEBYTETYPEBEGIN

BEGIN_OFFSETDWORDOFFSETBEGIN

.code

BEGIN:

RET

ENDBEGIN

 

习  题4

1.Inrealmode,supposethatDS=2000H、BX=0100H、SI=0002H,memory[20100H]~[20103H]storedata12,34,56,78H,[21200H]~[21203H]storedata2A,4C,B7,65H.Givethevaluesaftereachinstructionperformed.

(1)movax,1200h

(2)movax,bx

(3)movax,[1200h]

(4)movax,[bx]

(5)movax,[bx+1100h]

(6)movax,[bx+si]

(7)movax,[bx][si+1100h]

2.控制转移类指令中有哪三种寻址方式?

3.Whatisshortjump,nearjumpandfarjump?

Whatareintersegmentjumpandintrasegmentjump?

4.实模式下,假设DS=2000H,BX=1256H,SI=528FH,位移量TABLE=20A1H,[232F7H]=3280H,[264E5H]=2450H,试问执行下列段内间接寻址的转移指令后,转移的有效地址是什么?

(1)jmpbx

(2)jmptable[bx]

(3)jmp[bx][si]

5.什么是操作码、操作数和寻址方式?

有哪三种给出操作数的方法?

6.什么是有效地址EA?

80x86的操作数如果在主存中,有哪些寻址方式可以存取它?

7.Describestheaddressingmodeineachinstruction.SupposethatBX=2000H,DI=40H,givethevaluesofDXorEA.

(1)movdx,[1234h]

(2)movdx,1234h

(3)movdx,bx

(4)movdx,[bx]

(5)movdx,[bx+1234h]

(6)movdx,[bx+di]

(7)movdx,[bx+di+1234h]

(8)moveax,[ebx+4*edx+20]

(9)moveax,[ebx][edx]

习  题5

1.已知用于LED数码管的显示代码表为:

LEDtable  byte0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h

byte80h,90h,88h,83h,0c6h,0c1h,86h,8eh

它依次表示0~9、A~F这16个数码的显示代码。

现编写一个程序实现将字节变量lednum中的一个数字(0~9、A~F)转换成对应的LED显示代码。

2.Writeapieceofcodesequence:

storethreegradesinarray,caculatetheaveragegradeofthem.

3.设X、Y、Z、V均为16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。

movax,X

imulY

movcx,ax

moxbx,dx

movax,Z

cwd

addcx,ax

adcbx,dx

subcx,540

sbbbx,0

movax,V

cwd

subax,cx

sbbdx,bx

idivX

4.请分别用一条汇编语言指令完成如下功能:

(1)把EBX寄存器和EDX寄存器的内容相加,结果存入EDX寄存器。

(2)用寄存器EBX和ESI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。

(3)用EBX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和ECX寄存器的内容相加,并把结果送回存储器中。

(4)用的间接寻址方式把存储器单元04004000H中的一个字与数3412H相加,并把结果送回该存储单元中。

(5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中。

5.给出下列各条指令执行后的AL值,以及CF、ZF、SF、OF和PF的状态:

moval,89h

addal,al

addal,9dh

subal,al

decal

incal

6.Findtheerroroccursinthefollowinginstructions:

(1)movcx,dl

(2)moveip,ax

(3)moves,1234h(4)moves,ds

(5)moval,300(6)mov[esp],ax

(7)moveax,ebx+edi(8)mov20h,ah

(9)movzxax,82h(10)mov[eax],10

(11)moval,1200(12)mov100,eax

(13)mov[esi],[edi](14)shldeax,var,8

7.分别写出实现128位二进制数的加法和减法的序列指令。

8.写出实现下面功能的指令序列:

(1)x是16位有符号数,y是16位二进制有符号数,z=x+y

(2)x是16位有符号数,y是32位二进制有符号数,z=x+y

(3)x是32位有符号数,y是8位二进制有符号数,z=x+y

(4)x是32位有符号数,y是32位二进制有符号数,z=x×y

(5)x是16位无符号数,y是16位二进制无符号数,z=x÷y

(6)x是16位有符号数,y是16位二进制有符号数,z=x÷y

(7)x是32位有符号数,y是16位二进制有符号数,z=x×y

(8)x是16位有符号数,y是16位二进制有符号数,z=x×y

9.编写程序实现算术表达式:

m=(x*5)/(ymodz),其中的x、y、z、m都是32位有符号数。

10.设(eax)=0c5ffh,(ebx)=9e00h,试分析下列各条指令执行后ax、bx或cx寄存器以及ZF、SF、CF、OF、PF的状态。

(1)andeax,ebx

(2)xoreax,0ff00h

(3)oreax,0ff00h

(4)shleax,4

(5)sarebx,4

(6)rorebx,16

(7)btebx,8

(8)bsfecx,ebx

11.编写下列各功能程序段:

(1)al寄存器的各位变反;

(2)ebx寄存器的低4位置1;

(3)eax寄存器的低4位清零;

(4)ecx寄存器的低4位变反;

(5)采用移位指令实现ax5,结果送bx,要求ax的内容保持不变;(设结果无溢出)

12.编写程序分解EAX寄存器的内容:

取高7位存入双字变量value1,取中间15位存入双字变量value2,取最后10位存入双字变量value3。

13.编写完整的程序完成例5-47的功能:

利用作者提供的宏指令ReadUDecByte从键盘接收一个字节的十进制数,利用例题5-47的代码,将这个十进制数转换成十六进制字符存放到HexStr中,用输出字符串宏(WriteString)显示转换的结果。

习题6

1.转移指令有几种类型?

各自有什么特点?

答:

段内近转移,段内短转移,段间远转移

直接寻址,间接寻址

2.指出下面转移指令的类型(相对近转移,相对短转移,间接转移)。

.DATA

addrSoreDWORD?

.CODE

……

again:

……

(3instructions)

jmpagain;短转移

……

(200instructions)

……

jmpagain;近转移

……

jmpaddrStore;段内间接转移

……

jmpeax

……

jmp[edi]

3.代码段有以下指令:

ADDEAX,EBX

JNOL1

JNCL2

SUBEAX,EBX

JNCL3

JNCL4

JMPSHORTL5

如果EAX和EBX的内容如下:

(1)EAX=0102147BH,EBX=120180DCH;L1

(2)EAX=12348756H,EBX=800080DCH;L1

(3)EAX=D0230000H,EBX=9FD0000H;L3

(4)EAX=94B70000H,EBX=B568000H;L1

指令执行完后,程序怎样转移?

4.假设EAX和EBX的内容是无符号数,ECX和EDX的内容是有符号数,请用比较指令实现以下判断:

(1)如果EDX的内容大于ECX的内容,则转去执行L1;

cmpedx,ecx

jgL1

(2)如果EAX的内容大于EBX的内容,则转去执行L2;

cmpeax,ebx

jaL2

(3)如果ECX=0,则转去执行L3;

cmpecx,0

jzL3

(4)EAX-EBX是否会发生溢出,如果发生溢出则转去执行L4;

subeax,ebx

joL4

(5)如果EBX的内容小于EAX的内容,则转去执行L5;

cmpebx,eax

jbL5

(6)如果ECX的内容小于EDX的内容,则转去执行L6。

cmpecx,edx

jlL6

5.已知EAX=0000004FH,VALUE=FFFFFFFFFFFFFF38H。

请指出下面每一个语句是否会引起转移?

(a)cmpeax,value

jldest;N

(b)cmpeax,value

jbdest;Y

(c)cmpeax,04fh

jedest ;Y

(d)cmpeax,79

jnedest;N

(e)cmpvalue,0

jbedest;N

(f)cmpvalue,-200

jgedest ;Y

(g)cmpeax,200

jsdest;y

(h)addvalue,200

jzdest;N

6.编写程序测试STATUS中的状态:

如果STATUS=0,则转去执行L0;如果D0,D3,D5位为1则转去执行L1;如果D31,D29为0则转去执行L2;如果D15,D14,D13为1,则转去执行L3。

teststatus,FFFFH

jzL0

teststatus,29H

jneL1

teststatus,C0000000H

jzL2

teststatus,00e00000H

jneL3

7.指出下面每一个循环的循环次数:

(a)movecx,10

again:

……

loopagain

10

(b)movecx,1

again:

……

loopagain

1

(c)movecx,0

again:

……

loopagain

4294967296

(c)movecx,-1

again:

……

loopagain

4294967295

8.编写一个程序将双字数组ARRAY中的每一个元素加1(不考虑溢出)。

.386

.modelflat,stdcall

.data

arraydword35,89,-39,89,45,78,-90

countequ$-array

.code

startup:

movecx,count

movebx,offsetarray

again:

inc[ebx]

incebx

loopagain

ret

endstart

9.在双字型无序数组中找出最大数,存入max单元中。

.386

.modelflat,stdcall

.data

arraydword35,89,-39,89,45,78,-90

countequ$-array

.code

start:

movecx,count

movebx,offsetarray

moveax,[ebx]

incebx

again:

cmpeax,[ebx]

jbnext

moveax,[ebx]

next:

incebx

loopagain

ret

endstart

10.在x、y、z三个双字型变量中存放着3个无符号数,若3个数均不为0,求出它们的和存入w单元中(不考虑溢出);若有一个以上的数为0,将其他两个单元也清0。

.386

.modelflat,stdcall

.data

xdword?

ydword?

zdword?

.code

start:

cmpx,0

jzcls

cmpy,0

jzcls

cmpz,0

jzcls

moveax,x

addeax,y

addeax,z

movw,eax

jmpendpro

cls:

andx,0

andy,0

andz,0

endpro:

ret

endstart

11.把一个含有100字节型数据的数组分成两组:

正数数组P和负数数组N。

.386

.modelflat,stdcall

.data

arraybyte100dup(?

Pbyte100dup(?

Nbyte100dup(?

.code

star

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1