《汇编语言》第二版习题答案(全)_第1页
《汇编语言》第二版习题答案(全)_第2页
《汇编语言》第二版习题答案(全)_第3页
《汇编语言》第二版习题答案(全)_第4页
《汇编语言》第二版习题答案(全)_第5页
已阅读5页,还剩140页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

检测点1.1

(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为」&位。

(2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。

(3)1KB的存储器可以存储8192(2一13)个bit,1024个Byte。

(4)1GB是1073741824(2爪0)个Byte、1MB是1048576(2'20)个Byte、1KB是1024(2'10)个

Byte。

(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力

分别为:里.(KB),J_(MB),_W_(MB)、_4_(GB)„

(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们

一次可以传送的数据为:」_(B)、J_(B)、_2_(B)、_2_(B)、_4_(B)。

(7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。

(8)在存储器中,数据和程序以二进制形式存放。

解题过程:

(1)1KB=1O24B,8KB=1024B*8=2"N,N=13«

(2)存储器的容量是以字节为最小单位来计算的,1KB=1O24B。

(3)8Bit=lByte,1024Byte=lKB(lKB=1024B=1024B*8Bit).

(4)1GB=1O73741824B(W2'30)1MB=1O48576B(HP2-20)1KB=1O24B(即2」0)。

(5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N

次方个内存单元。(一个内存单元=lByte)。

<6)8根数据总线一次可以传送8位二进制数据(即一个字节)。

(7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。

(8)在存储器中指令和数据没有任何区别,都是二进制信息。

检测点2.1

(1)写出每条汇编指令执行后相关寄存器中的值。

movax,62627AX二F4A3H

movah,31HAX=31A3H

moval,23HAX=3123H

addax,axAX=6246H

movbx,826CHBX=826cH

movex,axCX=6246H

movax,bxAX=826CH

addax,bxAX=04D8H

moval,bhAX=0482H

movah,blAX=6C82H

addah,ahAX=D882H

addal,6AX=D888H

addal,alAX=D810H

movax,exAX=6246H

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\D0CUME',l\ADMINri>debug

-a

OC1C:O1OOmovax,f4a3

OC1C:O1O3movah,31

OC1C:O1O5moval,23

OC1C:O1O7addax,ax

OC1C:O1O9movbx,826c

OC1C:O1OCmovex,ax

OC1C:O1OEmovax,bx

OC1C:O11Oaddax,bx

OC1C:O112moval,bh

OC1C:OU4movah,bl

OC1C:O116addah,ah

OC1C:OU8addal,6

OC1C:O11Aaddal,al

OC1C:O11Cmovax,ex

OC1C:O11E

AX=OOOOBX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=OCICIP=0100NVUPEIPLNZNAPONC

OC1C:O1OOB8A3F4MOVAX,F4A3

-t

AX=F4A3BX=OOOOCX=OOOODX=OOOOSP二FFEEBPR000SI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP-0103NVUPEIPLNZNAPONC

OC1C:O1O3B431MOVAH,31

-t

AX=31A3BX=OOOOCX=OOOODX=OOOOSP:FFEEBP=OOOOSI=0000DI=0000

DS二OC1CES=OC1CSS=OC1CCS=OC1CIP=0105NVUPEIPLNZNAPONC

OC1C:O1O5B023MOVAL,23

-t

AX=3123BX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP=0107NVUPEIPLNZNAPONC

OC1C:O1O701C0ADDAX,AX

-t

AX=6246BX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=OCICIP=0109NVUPEIPLNZNAPONC

OC1C:O1O9BB6C82MOVBX,826C

-t

AX=6246BX=826CCX=OOOODX=OOOOSP二FFEEBPR000SI=0000DI=OOOO

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP-0IOCNVUPEIPLNZNAPONC

OC1C:O1OC89C1MOVCX,AX

-t

AX=6246BX=826CCX=6246DX=OOOOSP=FFEEBP=OOOOSI=OOOODI=OOOO

DS二OC1CES=OC1CSS=OC1CCS=OC1CIP=010ENVUPEIPLNZNAPONC

OC1C:O1OE89D8MOVAX,BX

AX=826CBX=826cCX=6246DX=OOOOSP=FFEEBP=0000srooooDI=OOOO

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP=0110NVUPEIPLNZNAPONC

OC1C:O11O01D8ADDAX,BX

AX=04D8BX=826cCX=6246DX=OOOOSP=FFEEBP=0000SI=0000DI=OOOO

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP=0112OVUPEIPLNZACPECY

OC1C:O11288F8MOVAL,BH

AX=0482BX=826CCX=6246DX=OOOOSP=FFEEBP=OOOOSI=OOOODI=OOOO

DS=0C1CES=0C1CSS=OC1CCS=OC1CIP-0114OVUPEIPLNZACPECY

OC1C:O11488DCMOVAH,BL

AX=6C82BX=826CCX=6246DX=OOOOSP二FFEEBP=OOOOSI=0000DI=OOOO

DS-0C1CES=OC1CSS=0C1CCS=OC1CIP-0116OVUPEIPLNZACPECY

OC1C:O11600E4ADDAH,AH

AX=D882BX=826CCX=6246DX=OOOOSP=FFEEBP=OOOOSI=OOOODI=OOOO

DS=OC1CES=OC1CSS=0C1CCS=OC1CIP-0118OVUPEINGNZACPENC

OC1C:O1180406ADDAL,06

AX=D888BX=826CCX=6246DX=OOOOSP二FFEEBP=OOOOSI=0000DI=OOOO

DS=OC1CES=OC1CSS=OC1CCS=0C1CIP-011ANVUPEINGNZNAPENC

OC1C:O11AOOCOADDAL,AL

AX=D810BX=826CCX=6246DX=OOOOSP=FFEEBP=OOOOSI=OOOODI=OOOO

DS=0C1CES=0C1CSS=OC1CCS=OC1CIP-01ICOVUPEIPLNZACPOCY

OC1C:O11C89C8MOVAX,CX

AX=6246BX=826CCX=6246DX=OOOOSP二FFEEBP=OOOOSI=0000DI=OOOO

DS-0C1CES=OC1CSS=0C1CCS=OC1CIP-01IEOVUPEIPLNZACPOCY

OC1C:O11EOBOCORCX,[SI]DS:0000=20CD

一q

检测点2.1

⑵只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。

movax,2AX=2

addax,axAX=4

addax,axAX=8

addax,axAX=16

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\DOCUMEl\ADMINI〜l>debug

-a

OC1C:O1OOmovax,2

OC1C:O1O3addax,ax

OC1C:O1O5addax,ax

OC1C:O1O7addax,ax

OC1C:O1O9

AX=0000BX=OOOOCX=00001)X=0000SP-FFEEBF^OOOOSI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP=0100NVUPEIPLNZNAPONC

OC1C:O1O()B80200MOVAX,0002

AX=0002BX-0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP=0103NVUPEIPLNZNAPONC

OC1C:O1O301C0ADDAX,AX

AX=0004BX=0000CX=OOOODX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=OCICES=OC1CSS=OC1CCS=OC1CIP=0105NVUPEIPLNZNAPONC

OC1C:O1O501C0ADDAX,AX

AX=0008BX-0000CX=OOOODX=0000SP-FFEEBP=0000SI=00001)1=0000

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP=0107NVUPEIPLNZNAPONC

OC1C:O1O701C0ADDAX,AX

AX=0010BX=0000CX=00001)X=0000SP=FFEEBF^OOOOSI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP=0109NVUPEIPLNZACPONC

OC1C:O1O920881615AND[BX+SI+1516],CLDS:1516-00

检测点2.2

(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为001011到1000FH。

解题过程:

物理地址=5人*16+后代

EA的变化范围为Oh'ffffh

物理地址范围为(SA*16+0h)〜(SA*16+ffffh)

现在SA=0001h,那么寻址范围为

(000lh*l6+0h)〜(0001h*16+ffffh)

=0010h~1000fh

检测点2.2

(2)有一数据存放在内存2000011单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足

的条件是:最小为1001H,最大为2000H。

当段地址给定为1001H以卜.和2000H以上,CPU无论怎么变化偏移地址都无法寻到20000H单元。

解题过程:

物理地址=5人*16+£人

20000h=SA*16+EA

SA=(20000h-EA)/16=2000h-EA/16

EA取最大值时,SA=2000h-ffffh/16=100Ih,SA为最小值

EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值

这里的ffffH/16=fffh是通过WIN白带计算器算的

按位移来算确实应该为fff.fh,这里小数点后的f应该是省略了

单就除法来说,应有商和余数,但此题要求的是地址最大和最小,所以余数忽略了

如果根据位移的算法(段地址*16=16进制左移一位),小数点后应该是不能省略的

我们可以反过来再思考下,如果SA为1000h的话,小数点后省略

SA=1000h,EA取最大ffffh,物理地址为Iffffh,将无法寻到20000H单元

这道题不应看成是单纯的计算题

检测点2.3

下面的3条指令执行后,cpu儿次修改IP?都是在什么时候?最后IP中的值是多少?

movax,bx

subax,ax

jmpax

答:一共修改四次

第■次:读取movax,bx之后

第二次:读取subax,ax之后

第三次:读取jmpax之后

第四次:执行jmpax修改IP

最后IP的值为0000H,因为最后ax中的值为0000H,所以IP中的值也为0000H

实验一查看CPU和内存,用机器指令和汇编指令编程

2实验任务

(D使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的

变化。

机器码汇编指令寄存器

b8204emovax,4E20Hax=4E20H

051614addax,1416Hax=6236H

bb0020movBX,2000Hbx=2000H

01d8addax,bxax=8236H

89c3movbx,axbx=8236H

01d8addax,bxax=046CH

b8la00movax,001AHax=001AH

bb2600movbx,002611bx=0026H

00d8addal,blax=0040H

00deaddah,blax=2640H

00c7addbh,albx=4026H

b400movah,0ax=0040H

00d8addal,blax=0066H

049caddal,9CHax=0002H

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\D0CUME'l\ADMINri>debug

-a

0ClC:0100movax,4e20

0ClC:0103addax,1416

OC1C:O1O6movbx,2000

OC1C:O1O9addax,bx

OC1C:O1OBmovbx,ax

OC1C:O1ODaddax,bx

0ClC:010Fmovax,001a

OC1C:O112movbx,0026

OC1C:O115addal,bl

OC1C:O117addah,bl

OC1C:O119addbh,al

0ClC:011Bmovah,0

OC1C:O11Daddal,bl

OC1C:O11Faddal,9c

OC1C:O121

AX=0000BX=0000CX=OOOODX=OOOOSP=FFEEBP=0000SI=0000DI=0000

DS=OC1CES=OC1CSS=0C1CCS=OC1CIP-0100NVUPEIPLNZNAP0NC

0ClC:0100B8204EMOVAX,4E20

AX=4E20BX=0000CX=OOOODX=OOOOSP:FFEEBP=OOOOSI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP-0103NVUPEIPLNZNAPONC

OC1C:O1O3051614ADDAX,1416

AX=6236BX=OOOOCX=OOOODX=OOOOSP:FFEEBP=OOOOSI=0000DI=OOOO

DS=OC1CES=OC1CSS=0C1CCS=OC1CIP=0106NVUPEIPLNZNAPENC

OC1C:O1O6BB0020MOVBX,2000

AX=6236BX=2000CX=OOOODX=OOOOSP二FFEEBP=OOOOSI=0000DI=0000

DS=0C1CES=OC1CSS=0C1CCS=OC1CIP-0109NVUPEIPLNZNAPENC

OC1C:O1O901D8ADDAX,BX

-t

AX=8236BX=2000CX=0000DX=OOOOSP=FFEEBP=0000SI=OOOODI=0000

DS=OC1CES-0C1CSS=0C1CCS=OC1CIP-01OBOVUPEINGNZNAPENC

OC1C:O1OB89C3MOVBX,AX

AX=8236BX=8236CX=OOOODX=OOOOSP二FFEEBP=OOOOSI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP=010DOVUPEINGNZNAPENC

OC1C:O1OD01D8ADDAX,BX

AX=046cBX=8236CX=0000DX=OOOOSP=FFEEBP=0000SI=0000DI=OOOO

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP=010FOVUPEIPLNZNAPECY

OC1C:O1OFB81A00MOVAX,001A

AX=001ABX=8236CX=OOOODX=OOOOSPnFFEEBP=0000SI=OOOODI=OOOO

DS=OC1CES=OC1CSS=0C1CCS=OC1CIP-0112OVUPEIPLNZNAPECY

OC1C:O112BB2600MOVBX,0026

AX=OOIABX=0026CX=OOOODX=OOOOSP二FFEEBP=OOOOSI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP-0115OVUPEIPLNZNAPECY

OC1C:O11500D8ADDAL,BL

AX=0040BX=0026CX=OOOODX=OOOOSP:FFEEBP=OOOOSI=0000DI=OOOO

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP=0117NVUPEIPLNZACPONC

OC1C:O117OODCADDAH,BL

AX=2640BX=0026CX=OOOODX=OOOOSP二FFEEBP=OOOOSI=0000DI=OOOO

DS=0C1CES=OC1CSS=0C1CCS=OC1CIP-0119NVUPEIPLNZNAPONC

OC1C:O11900C7ADDBH,AL

AX=2640BX=4026CX=OOOODX=OOOOSPnFFEEBP=0000SI=OOOODI=OOOO

DS=OC1CES=OC1CSS=0C1CCS=OC1CIP-01IBNVUPEIPLNZNAPONC

OC1C:O11BB400MOVAH,00

AX=0040BX=4026CX=OOOODX=OOOOSP:FFEEBP=OOOOSI=0000DI=OOOO

DS=OC1CES=OC1CSS=OC1CCS=OC1CIP-01IDNVUPEIPLNZNAPONC

OC1C:O11D00D8ADDAL,BL

AX=0066BX=4026CX=OOOODX=OOOOSP:FFEEBP=OOOOSI=0000DI=OOOO

DS=OC1CES=OC1CSS=0C1CCS=OC1CIP=01IFNVUPEIPLNZNAPENC

OC1C:O11F049CADDAL,9C

-t

AX=0002BX=4026CX=OOOODX=OOOOSP二FFEEBP=OOOOSI=0000DI=OOOO

DS=0C1CES=OC1CSS=0C1CCS=OC1CIP-0121NVUPEIPLNZACPOCY

OC1C:O121D3990075RCRWORDPTR[BX+DI+7500],CLDS:B526=0000

一q

实验一查看CPU和内存,用机器指令和汇编指令编程

(2)将下面的3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。

movax,1

addax,ax

jmp2000:0003

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\DOCUME'l\ADMINri>debug

-a2000:0

2000:0000movax,1

2000:0003addax,ax

2000:0005jmp2000:0003

2000:0007

-rcs

CS0C1C

:2000

-rip

IP0100

:0000

-r

AX=0000BX=0000CX=OOOODX=OOOOSP二FFEEBP=0000SI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=2000IP-0000NVUPEIPLNZNAPONC

2000:0000B80100MOVAX,0001

-t

AX=0001BX=OOOOCX=OOOO1)X=0000SP=FFEEBP=0000SI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=2000IP=0003NVUPEIPLNZNAPONC

2000:000301C0ADDAX,AX

-t

AX=0002BX=OOOOCX=00001)X=0000SP=FFEEBP=OOOOSI=0000DI=OOOO

DS=OC1CES=OC1CSS=OC1CCS=2000IP=0005NVUPEIPLNZNAPONC

2000:0005EBFCJMP0003

-t

AX=0002BX-0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=2000IP=0003NVUPEIPLNZNAPONC

2000:000301C0ADDAX,AX

-t

AX=0002BX=0000CX=OOOODX=OOOOSP二FFEEBP=0000SI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=2000IP-0003NVUPEIPLNZNAPONC

2000:000301C0ADDAX,AX

-t

AX=0004BX=OOOOCX=OOOODX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=2000IP=0005NVUPEIPLNZNAPONC

2000:0005EBFCJMP0003

-t

AX=0004BX=OOOOCX=00001)X=0000SP=FFEEBP=OOOOSI=0000DI=0000

DS=OC1CES=OC1CSS=OC1CCS=2000IP=0003NVUPEIPLNZNAPONC

2000:000301C0ADDAX,AX

AX=0008BX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=OOOODI=OOOO

DS=OC1CES=OC1CSS=0C1CCS=2000IP=0005NVUPEIPLNZNAPONC

2000:0005EBFCJMP0003

AX=0008BX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=0000DI=OOOO

DS=OC1CES=OC1CSS=0C1CCS=2000IP=0003NVUPEIPLNZNAPONC

2000:000301C0ADDAX,AX

-q

实验•查看CPU和内存,用机器指令和汇编指令编程

(3)查看内存中的内容

PC主:板上的ROM中有个•出产日期,在内存FFFOOH-FFFFFH的某儿个单元中,请找到这个出产日期并试图

改变它。

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\D0CUME'l\ADMINri>debug

-dffff:Of

FFFF:0000EA5BE000F031322F-32352F303700FC59..12/25/07..Y

地址COOOO'FFFFF的内存单元为只读存储器,写入数据操作是无效的。

因此出产日期无法改变。

下面内容摘自于网上

还有另一种情况,如果你发现你能修改ROM中的生产日期,那么原因如下:

每个计算机的结构都不•样,教材考虑的是普通8086PC机上的效果,个别计算机的效果可能不同。

也就是说在你的计算机中这个内存是可修改的

所以,认为所有的计算机某些地址的内存不能修改是片面的。

廿上说rom是只读的你就不去验证了吗?如何验证呢?

我觉得这个实验最大的好处不是让我们验证了这个知识点,而是提醒我们要有怀疑的精神,怀疑之后再去

验证才能跟深刻的理解知识,提升自己的能力,甚至还会发现有些书上描述的不准确甚至错误的地方。

一引用这儿本书综合研究的三个问题:

都再用,我们就非得用吗?

规定了,我们就只知道遵守吗?

司空见惯,我们就不怀疑了吗?

尽信书不如无书大概也有这个道理吧;一

检测点3.1

(1)在DEBUG中,用〃D0:0If"查看内存,结果如下:

0000:00007080F030EF6030E2-0080801266202260

0000:00106226E61)6CC2E3C3B-ABBA000026066688

下面的程序执行前,AX=O,BX=O,写出每条汇编指令执行完后相关寄存器中的值

movax,1

movds,ax

movax,[0000]ax=2662H

movbx,[0001]bx=E626H

movax,bxax=E626H

movax,[0000]ax=2662H

movbx,[0002]bx二D6E6H

addax,bxax=FD48H

addax,[0004]ax=2C14H

movax,0ax二0

moval,[0002]ax=00e6H

movbx,0bx=0

movbl,[000c]bx二0026H

addal,blax=OOOCH

用DEBUG进行验证:

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\D0CUME"l\000>debug

-e0000:0

0000:000068.7010.80A7.fO00.308B.ef01.6070.3000.e2

0000:000816.0000.80AF.8003.128B.6601.2070.2200.60

0000:00108B.6201.2670.e600.d6B9.cc06.2e14.3c02.3b

0000:001840.ab07.ba14.0002.00FF.2603.0614.6602.88

-d0000:0If

0000:00007080FO30EF60301E2-0080801266202260p..0.'0....f〃、

0000:00106226E6D6CC2E3C:3B-ABBA000026066688b&....&.f.

-a

0DB4:0100movax,1

0DB4:0103movds,

0DB4:0105movax,[0000]

0DB4:0108movbx,[0001]

0DB4:010Cmovax,bx

0DB4:010Emovax,[0000]

0DB4:0111movbx,[0002]

0I)B4:0115addax,bx

0I)B4:0117addax,[0004]

0DB4:011Bmovax,0

0DB4:011Emoval,[0002]

0I)B4:0121movbx,0

0DB4:0124movbl,[000c]

0DB4:0128addal,bl

0DB4:012A

-r

AX=OOOOBX=OOOOCX=OOOO1DX=OOOOSP=FFEEBP=OOOOSI=0000DI=0000

DS=0DB4ES=0DB4SS=0DB4(CS=0DB4IP=0100NVUPEIPLNZNAPONC

0DB4:0100B80100MOVFAX,0001

-t

AX=0001BX=0000CX=0000DX=OOOOSP=FFEEBP=0000SI=0000DI=0000

DS=0DB4ES=0DB4SS=0DB4CS=0DB4IP=0103NVUPEIPLNZNAPONC

0DB4:01038ED8MOVDS,AX

-t

AX=0001BX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=0000DI=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0105NVUPEIPLNZNAPONC

0DB4:0105A10000MOVAX,[0000]DS:0000=2662

-t

AX=2662BX=OOOOiCX=OOOODX=OOOOSP二FFEEBP=OOOOSI=0000DI=0000

DS=0001ES=0DB4:SS=0DB4CS=0DB4IP=0108NVUPEIPLNZNAPONC

0DB4:01088B1E0100MOVBX,[0001]DS:0001=E626

AX=2662BX=E626CX=OOOODX=OOOOSP=FFEEBP=OOOOSI=0000DI=OOOO

DS=OOO1ES=0DB4SS=0DB4CS=0DB4IP=O1OCNVUPEIPLNZNAPONC

0DB4:010C89D8MOVAX,BX

AX=E626BX=E626CX=OOOODX=OOOOSP二FFEEBP=OOOOSI=0000DI=OOOO

DS二OOO1ES=0DB4SS=0DB4CSRDB4IP=010ENVUPEIPLNZNAPONC

0DB4:010EA10000MOVAX,[0000]DS:0000=2662

-t

AX=2662BX=E626CX=0000DX=OOOOSP=FFEEBP=0000SI=0000DI=OOOO

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0111NVUPEIPLNZNAPONC

0DB4:01118B1E0200MOVBX,[0002]DS:0002=D6E6

-t

AX=2662BX=D6E6CiX=OOOODX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0001ES=0DB4S:S=0DB4CS=0DB4IP=0115NVUPEIPLNZNAPONC

0DB4:011501D8ADDAX,BX

-t

AX=FD48BX=D6E6C(X=OOOODX=0000SP=FFEEBP-0000SI=0000DI=OOOO

DS=0001ES=0DB4S:S=0DB4CSRDB4IP=0117NVUPEINGNZNAPENC

0DB4:011703060400ADDAX,[0004]DS:0004=2ECC

-t

AX=2C14BX=D6E6(CX=OOOODX=OOOOSP二FFEEBPR000SI=0000DI=OOOO

DS=0001ES=0DB4:SS=0DB4CS=0DB4IP=01IBNVUPEIPLNZACPECY

0DB4:011BB80000MOVAX,0000

-t

AX=OOOOBX=D6E6C(X=OOOODX=0000SP=FFEEBP=0000SI=OOOODI=OOOO

DS=0001ES=0DB4:SS=0DB4CS=0DB4IP=0UENVUPEIPLNZACPECY

0DB4:011EA00200MOVAL,[0002]DS:0002=E6

-t

AX=00E6BX-D6E6C(X=OOOODX=0000SP=FFEEBI^OOOOSI=0000DI=0000

DS=0001ES=0DB4:SS=0DB4CS=0DB4IP=0121NVUPEIPLNZACPECY

0DB4:0121BBOOOOMOVBX,0000

-t

AX=00E6BX=OOOOC(X=OOOODX=OOOOSP=FFEEBP=OOOOSI=OOOODI=OOOO

DS=0001ES=0DB4S:S=0DB4CS=0DB4IP=0124NVUPEIPLNZACPECY

0DB4:01248A1E0C00MOVBL,[OOOC]DS:000026

-t

AX=00E6BX=0026(CX=OOOODX=OOOOSP:FFEEBPR000SI=OOOODI=OOOO

DS=0001ES=0DB4S:S=0DB4CS=0DB4IP=0128NVUPEIPLNZACPECY

0I)B4:012800D8ADDAL,BL

-t

AX=OOOCBX=0026C(X=0000DX=OOOOSP=FFEEBP=0000srooooDI=OOOO

DS=0001ES=0DB4S:S=0DB4CS=0DB4IP=012ANVUPEIPLNZNAPECY

0DB4:012AC6061799FFMOVBYTEPTR[9917],FFDS:9917=9A

-q

检测点3.1

(2)内存中的情况如图3.6所示

各寄存器的初始值:cs=2000h,ip=O,ds=1000h,ax=0,bx=0;

①写出CPU执行的指令序列(用汇编指令写出)。

②写出CPU执行每条指令后,CS、IP和相关寄存器的数值。

③再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?

10000H}mov20000H—BS}mov

1000IH00ax#2000H20001H22&X,6622H

10002H202OOO2H66

10003H8E}mov20003HEA

ds/AX

10004HD820004H00

I0005HAl}mov2OOO5H01,jmp0ff0:0100

I0006H08axr(0008)20006HF0

10007H002OOO7HOF.

10008HAl20008H89}mov

}movbx,ax

10009H02ax,(0002)20009HC3

10C0AH002000AH

1000BH2000BH

1000CH2000CH

033.6内存情况示意

图3.6内存情况示意

指令序列CSIPDSAXBX

初始值2000h00()0

1movax,6622h2000h3h06622h0

2jmp0ff0:0100ffOhlOOh06622h0

3movax,2000hffOh103h02000h0

4movds,axffOh105h2000h2000h0

5movax,[8]ffOh108h2000hc389h0

6movax,[2]ffOhlObh2000hea66h0

检测点3.2

(1)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。

movax,1000H

movds,ax

movax,2000H

movss,ax

movsp,lOh

ru

LO

r2T

LJ

r4T

LJ

r6T

LJI

r8u

L

A

rT

LJ

C

ru

LE

rJ

L

检测点3.2

(2)补全下面的程序,使其可以将1OOOOH-1OOOFH中的8个字,逆序拷贝到20000H-2000FH中。

movax,2000H

movds,ax

movax,1000H

movss,ax

movsp,0

pop[e]

pop[c]

pop[a]

pop[8]

pop[6]

pop[4]

pop[2]

pop[0]

实验2用机器指令和汇编指令编程

(1)使用DEBUG,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

movax,ffff

movds,ax

movax,2200

movss,ax

movsp,0100

movax,[0]ax=5BEAH

addax,[2]ax=5CCAH

movbx,[4]bx=31F0H

addbx,[6]bx=6122H

pushax;sp=OOFEH,修改的内存单元地址是2200:00FE内容为5CCAH

pushbx;sp=OOFCH,修改的内存单元地址是2200:OOFC内容为6122H

popax;sp=OOFCH,ax=6122H

popbx;sp=OOFEH,bx=5CCAH

push[4];sp=OOFEH,修改的内存单元地址是2200:OOFE内容为31F0

push[6];sp=OOFCH,修改的内存单元地址是2200:00FC内容为2F32

此实验答案不定,需根据每台机器的实际运行情况。

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\DOCUME'l\ADMINri>debug

0ClC:0100movax,ffff

OC1C:O1O3movds,ax

OC1C:O1O5movax,2200

OC1C:O1O8movss,ax

OC1C:O1OAmovsp,0100

OC1C:O1ODmovax,[0]

OC1C:O11Oaddax,[2]

OC1C:O114movbx,[4]

OC1C:O118addbx,[6]

OC1C:O11Cpushax

OC1C:O11Dpushbx

OC1C:O11Epopax

OC1C:O11Fpopbx

OC1C:O12Opush[4]

OC1C:O124push[6]

OC1C:O128

AX=OOOOBX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=0000DI=0000

DSRC1CES=0C1CSS=OC1CCS=OC1CIP=0100NVUPEIPLNZNAPONC

OC1C:O1OOB8FFFFMOVAX,FFFF

AX=FFFFBX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=0000DI=0000

DS=OC1CES=OC1CSS=0C1CCS=OC1CIP=0103NVUPEIPLNZNAPONC

OC1C:O1O38ED8MOVDS,AX

AX=FFFFBX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=0000DI=0000

DS二FFFFES=OC1CSS=0C1CCS=OC1CIP=0105NVUPEIPLNZNAPONC

OC1C:O1O5B80022MOVAX,2200

AX=2200BX=0000CX=00001)X=0000SP-FFEEBF^OOOOSI=0000DI=0000

DS二FFFFES=OC1CSS=OC1CCS=OC1CIP=0108NVUPEIPLNZNAPONC

OC1C:O1O88ED0MOVSS,AX

AX=2200BX-0000CX=OOOODX=OOOOSP-0100BP=0000SI=0000DI=0000

DS=FFFFES=OC1CSS=2200CS=OC1CIP=010DNVUPEIPLNZNAPONC

OC1C:O1ODA10000MOVAX,[0000]DS:0000=5BEA

-df

FFFF:0000EA5BEO00FO31322F-32352F303700FC59[...12/25/07..Y

AX=5BEABX-0000CX=OOOODX=0000SP-0100BP=0000S1=0000DI=0000

DSnFFFFES=OC1CSS=2200CS=OC1CIP=0110NVUPEIPLNZNAPONC

OC1C:O11O03060200ADDAX,[0002]DS:0002=00E0

AX=5CCABX=0000CX=OOOODX=0000SP-0100BP=0000SI=0000DI=0000

DS二FFFFES=OC1CSS=2200CS=OC1CIP=0114NVUPEIPLNZNAPENC

OC1C:O1148B1E0400MOVBX,[0004]DS:0004=3IFO

AX=5CCABX-31F0CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000

DS二FFFFES=OC1CSS=2200CS=OC1CIP=0118NVUPEIPLNZNAPENC

OC1C:O118031E0600ADDBX,[0006]DS:0006=2F32

AX=5CCABX=6122CX=0000DX=0000SP=0100BP=OOOOSI=0000DI=OOOO

DS二FFFFES=0C1CSS=2200CS=OC1CIP二01ICNVUPEIPLNZNAPENC

OC1C:O11C50PUSHAX

AX=5CCABX=6122CX=OOOODX=OOOOSP=OOFEBP=OOOOSI=OOOODI=OOOO

DS二FFFFES=OC1CSS=2200CS=OC1CIP二01IDNVUPEIPLNZNAPENC

OC1C:O11D53PUSHBX

AX=5CCABX=6122CX=OOOO1)X=OOOOSP=OOFCBP=OOOOSI=0000DI=OOOO

DS二FFFFES=0C1CSS=2200CS=0C1C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论