匯編語言(王爽)第二版課后題全答案_第1頁
匯編語言(王爽)第二版課后題全答案_第2頁
匯編語言(王爽)第二版課后題全答案_第3頁
匯編語言(王爽)第二版課后題全答案_第4頁
匯編語言(王爽)第二版課后題全答案_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

檢測(cè)點(diǎn)1.1

(1)1個(gè)CPU的尋址能力為8KB,那么它的地址總線的寬度為出位。

(2)1KB的存儲(chǔ)器有1024個(gè)存儲(chǔ)單元,存儲(chǔ)單元的編號(hào)從0到1023。

(3)1KB的存儲(chǔ)器燈以存儲(chǔ)8192(2A13)個(gè)b讓,1024個(gè)Bvte。

(4)1GB是1073741824(2A30)個(gè)Byte、1MB是1048576(2人20)個(gè)Byte、1KB

是是24(2(0)個(gè)Byte。

(5)8080、8088、80296、80386的地址總線寬度分另U為16根、20根、24根、32根,

則它們的尋址能力分別為9(KB)、1(MB),16(MB)、4(GB)。

(6)8080、8088,8086、80286、80386的數(shù)據(jù)總線寬度分別為8根、8根、16根、16

根、32根。則它們一次可以傳送的數(shù)據(jù)為:1(B)、[(B)、2(B)、2(B)、4(B)。

(7)從內(nèi)存中讀取1024字節(jié)的數(shù)據(jù),8086至少要讀以2次,80386至少要讀256次。

(8)在存儲(chǔ)器中,數(shù)據(jù)和程序以二進(jìn)制形式存放。

解題過程:

(1)1KB=1024B,8KB=1024B*8=2AN,N=13。

(2)存儲(chǔ)器的容量是以字節(jié)為最小單位來計(jì)算的,1KB=1024B。

(3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。

(4)1GB=1073741824B(即2A30)1MB=1048576B(即2A20)1KB=1024B(即2A10)。

(5)一個(gè)CPU有N根地址線,則可以說這個(gè)CPU的地址總線的寬度為N。這樣的CPU

最多可以尋找2的N次方個(gè)內(nèi)存單元。(一個(gè)內(nèi)存單元=1Byte)。

(6)8根數(shù)據(jù)總線一次可以傳送8位二進(jìn)制數(shù)據(jù)(即一個(gè)字節(jié))。

(7)8086的數(shù)據(jù)總線寬度為16根(即一次傳送的數(shù)據(jù)為2B)1024B/2B=512,同理

1024B/4B=256?

(8)在存儲(chǔ)器中指令和數(shù)據(jù)沒有任何區(qū)別,都是二進(jìn)制信息。

檢測(cè)點(diǎn)2.1

(1)寫出每條匯編指令執(zhí)行后相關(guān)寄存器中的值。

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:\DOCUME~1\ADMIN卜1>debug

-a

0C1C:0100movax,f4a3

0C1C:0103movah,31

0C1C:0105moval,23

0C1C:0107addax,ax

0C1C:0109movbx,826c

0C1C:010Cmovex,ax

0C1C:010Emovax,bx

0C1C:0110addax,bx

0C1C:0112moval,bh

0C1C:0114movah,bl

0C1C:0116addah,ah

0C1C:0118addal,6

0C1C:011Aaddal,al

0C1C:011Cmovax,ex

0C1C:011E

-r

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0100NVUPElPLNZNAPONC

0C1C:0100B8A3F4MOVAX,F4A3

-t

AX=F4A3BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0103NVUPElPLNZNAPONC

0C1C:0103B431MOVAH,31

-t

AX=31A3BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0105NVUPElPLNZNAPONC

0C1C:0105B023MOVAL,23

-t

AX=3123BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0107NVUPElPLNZNAPONC

0C1C:010701C0ADDAX,AX

-t

AX=6246BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0109NVUPElPLNZNAPONC

0C1C:0109BB6C82MOVBX,826C

-t

AX=6246BX=826CCX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010CNVUPElPLNZNAPONC

0C1C:010C89C1MOVCX,AX

-t

AX=6246BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010ENVUPElPLNZNAPONG

0C1C:010E89D8MOVAX,BX

-t

AX=826CBX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0110NVUPElPLNZNAPONC

0C1C:011001D8ADDAX,BX

-t

AX=04D8BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0112OVUPElPLNZACPECY

0C1C:011288F8MOVAL,BH

-t

AX=0482BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0114OVUPElPLNZACPECY

0C1C:011488DCMOVAH,BL

-t

AX=6C82BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0116OVUPElPLNZACPECY

0C1C:011600E4ADDAH,AH

AX=D882BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0118OVUPElNGNZACPENC

0C1C:01180406ADDAL,06

-t

AX=D888BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011ANVUPElNGNZNAPENC

0C1C:011A00C0ADDAL,AL

-t

AX=D810BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011COVUPElPLNZACPOCY

0C1C:011C89C8MOVAX,CX

-t

AX=6246BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011EOVUPEIPLNZACPOCY

0C1C:011E0B0CORCX,[SI]DS:0000=20CD

檢測(cè)點(diǎn)2.1

(2)只能使用目前學(xué)過的匯編指令,最多使用4條指令,編程計(jì)算2的4次方。

movax,2AX=2

addax,axAX=4

addax,axAX=8

addax,axAX=16

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\DOCUME-1\ADMINM>debug

-a

0C1C:0100movax,2

0C1C:0103addax,ax

0C1C:0105addax,ax

0C1C:0107addax,ax

0C1C:0109

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0100NVUPElPLNZNAPONC

0C1C:0100B80200MOVAX,0002

-t

AX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0103NVUPElPLNZNAPONC

0C1C:010301COADDAX,AX

-t

AX=0004BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0105NVUPElPLNZNAPONC

0C1C:010501COADDAX,AX

-t

AX=0008BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0107NVUPElPLNZNAPONC

0C1C:010701C0ADDAX,AX

-t

AX=0010BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0109NVUPElPLNZACPONC

0C1C:010920881615AND[BX+SI+1516],CLDS:1516=00

檢測(cè)點(diǎn)2.2

(1)給定段地址為0001H,僅通過變化偏移地址尋址,CPU的尋址范圍

為0010H到為00FH。

解題過程:

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

EA的變化范圍為Oh-ffffh

物理地址范圍為(SA*16+0h)~(SA*16+ffffh)

現(xiàn)在SA=0001h,那么尋址范圍為

(0001h*16+0h)-(0001h*16+ffffh)

=0010h-1OOOfh

檢測(cè)點(diǎn)2.2

⑵有嗷據(jù)存放在內(nèi)存20000H單元中,現(xiàn)給定段地址為SA,若想用偏移地址尋到此單

元。則SA應(yīng)滿足的條件是:最小為1001H,最大為2000H。

當(dāng)段地址給定為1001H以下和2000H以上,CPU無論怎么變化偏移地址都無法尋到

20000H單元。

解題過程:

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

20000h=SA*16+EA

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

EA取最大值時(shí),SA=2000h-ffffh/16=1001h,SA為最小值

EA取最小值時(shí),SA=2000h-0h/16=2000h,SA為最大值

這里的ffffH/16=fffh是通過WIN自帶計(jì)算器算的

按位移來算確實(shí)應(yīng)該為fff.fh,這里小數(shù)點(diǎn)后的f應(yīng)該是省略了

單就除法來說,應(yīng)有商和余數(shù),但此題要求的是地址最大和最小,所以余數(shù)忽略了

如果根據(jù)位移的算法(段地址*16=16進(jìn)制左移一位),小數(shù)點(diǎn)后應(yīng)該是不能省略的

我們可以反過來再思考下,如果SA為1000h的話,小數(shù)點(diǎn)后省略

SA=1000h,EA取最大ffffh,物理地址為Iffffh,將無法尋到20000H單元

這道題不應(yīng)看成是單純的計(jì)算題

檢測(cè)點(diǎn)2.3

卜面的3條指令執(zhí)行后,cpu幾次修改IP?都是在什么時(shí)候?最后IP中的值是多少?

movax,bx

subax,ax

jmpax

答:一共修改四次

第一次:讀取movax,bx之后

第二次:讀取subax,ax之后

第三次:讀取jmpax之后

第四次:執(zhí)行jmpax修改IP

最后IP的值為0000H,因?yàn)樽詈骯x中的值為0000H,所以IP中的值也為0000H

實(shí)驗(yàn)一查看CPU和內(nèi)存,用機(jī)器指令和匯編指令編程

2實(shí)驗(yàn)任務(wù)

(1)使用Debug,將下面的程序段寫入內(nèi)存,逐條執(zhí)行,觀察每條指令執(zhí)行后,CPU中相關(guān)

寄存器中內(nèi)容的變化。

機(jī)器碼匯編指令寄存器

b8204emovax,4E20Hax=4E20H

051614addax,1416Hax=6236H

bb0020movBX,2000Hbx=2000H

01d8addax,bxax=8236H

89c3movbx,axbx=8236H

01d8addax,bxax=046CH

b81a00movax,001AHax=001AH

bb2600movbx,0026Hbx=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:\DOCUME-1\ADMINM>debug

-a

0C1C:0100movax,4?20

0C1C:0103addax,1416

0C1C:0106movbx,2000

0C1C:0109addax,bx

0C1C:010Bmovbx,ax

0C1C:010Daddax,bx

0C1C:010Fmovax,001a

0C1C:0112movbx,0026

0C1C:0115addal,bl

0C1C:0117addah,bl

0C1C:0119addbh,al

0C1C:011Bmovah,0

0C1C:011Daddal,bl

0C1C:011Faddal,9c

0C1C:0121

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0100NVUPElPLNZNAPONC

0C1C:0100B8204EMOVAX,4E20

-t

AX=4E20BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0103NVUPElPLNZNAPONC

0C1C:0103051614ADDAX,1416

-t

AX=6236BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0106NVUPElPLNZNAPENC

0C1C:0106BB0020MOVBX,2000

-t

AX=6236BX=2000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0109NVUPElPLNZNAPENC

0C1C:010901D8ADDAX,BX

-t

AX=8236BX=2000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010BOVUPElNGNZNAPENC

0C1C:010B89C3MOVBX,AX

-t

AX=8236BX=8236CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010DOVUPElNGNZNAPENC

0C1C:010D01D8ADDAX,BX

-t

AX=046CBX=8236CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010FOVUPElPLNZNAPECY

0C1C:01OFB81A00MOVAX,001A

-t

AX=001ABX=8236CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0112OVUPEIPLNZNAPECY

0C1C:0112BB2600MOVBX,0026

-t

AX=001ABX=0026CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0115OVUPEIPLNZNAPECY

0C1C:011500D8ADDAL,BL

AX=0040BX=0026CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0117NVUPElPLNZACPONC

0C1C:011700DCADDAH,BL

-t

AX=2640BX=0026CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0119NVUPElPLNZNAPONC

0C1C:011900C7ADDBH,AL

-t

AX=2640BX=4026CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011BNVUPElPLNZNAPONG

0C1C:011BB400MOVAH,00

-t

AX=0040BX=4026CX=0000DX=0000SP=FFEEBP=0000SkOOOOD1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011DNVUPElPLNZNAPONC

0C1C:011D00D8ADDAL,BL

-t

AX=0066BX=4026CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011FNVUPElPLNZNAPENC

0C1C:011F049CADDAL.9C

-t

AX=0002BX=4026CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0121NVUPElPLNZACPOCY

0C1C:0121D3990075RCRWORDPTR[BX+DI+7500],CLDS:B526=0000

-q

實(shí)驗(yàn)一查看CPU和內(nèi)存,用機(jī)器指令和匯編指令編程

(2)將下面的3條指令寫入從2000:0開始的內(nèi)存單元中,利用這3條指令計(jì)算2的8次方。

movax,1

addax,ax

jmp2000:0003

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\DOCUME-1\ADMINH1>debug

-a2000:0

2000:0000movax,1

2000:0003addax,ax

2000:0005jmp2000:0003

2000:0007

-rcs

CS0C1C

:2000

-rip

IP0100

:0000

-r

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0000NVUPElPLNZNAPONC

2000:0000B80100MOVAX,0001

-t

AX=0001BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NVUPElPLNZNAPONC

2000:000301COADDAX,AX

-t

AX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0005NVUPElPLNZNAPONC

2000:0005EBFCJMP0003

-t

AX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NVUPElPLNZNAPONC

2000:000301COADDAX,AX

-t

AX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NVUPElPLNZNAPONC

2000:000301C0ADDAX,AX

-t

AX=0004BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0005NVUPElPLNZNAPONC

2000:0005EBFCJMP0003

-t

AX=0004BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NVUPElPLNZNAPONC

2000:000301COADDAX,AX

-t

AX=0008BX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=OOOOD1=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0005NVUPElPLNZNAPONC

2000:0005EBFCJMP0003

-t

AX=0008BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NVUPElPLNZNAPONC

2000:000301COADDAX,AX

-q

實(shí)驗(yàn)一查看CPU和內(nèi)存,用機(jī)器指令和匯編指令編程

(3)查看內(nèi)存中的內(nèi)容

PC主板上的ROM中有個(gè)?出產(chǎn)日期,在內(nèi)存FFFOOH-FFFFFH的某兒個(gè)單元中,請(qǐng)找至IJ

這個(gè)出產(chǎn)日期并試圖改變它。

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\DOCUME-1\ADMINI-1>debug

-dffff:Of

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

-q

地址C0000-FFFFF的內(nèi)存單元為只讀存儲(chǔ)器,寫入數(shù)據(jù)操作是無效的。

因此出產(chǎn)日期無法改變。

下面內(nèi)容摘自于網(wǎng)上

還有另?種情況,如果你發(fā)現(xiàn)你能修改ROM中的生產(chǎn)日期,那么原因如下:

每個(gè)計(jì)算機(jī)的結(jié)構(gòu)都不一樣,教材考慮的是普通8086PC機(jī)上的效果,個(gè)別計(jì)算機(jī)的效果

可能不同。

也就是說在你的計(jì)算機(jī)中這個(gè)內(nèi)存是可修改的

所以,認(rèn)為所有的計(jì)算機(jī)某些地址的內(nèi)存不能修改是片面的。

書上說rom是只讀的你就不去驗(yàn)證了嗎?如何驗(yàn)證呢?

我覺得這個(gè)實(shí)驗(yàn)最大的好處不是讓我們驗(yàn)證了這個(gè)知識(shí)點(diǎn),而是提醒我們要有懷疑的精神,

懷疑之后再去驗(yàn)證才能跟深刻的理解知識(shí),提升自己的能力,甚至還會(huì)發(fā)現(xiàn)有些書上描述的

不準(zhǔn)確甚至錯(cuò)誤的地方。

-引用這幾本書綜合研究的三個(gè)問題:

都再用,我們就非得用嗎?

規(guī)定了,我們就只知道遵守嗎?

司空見慣,我們就不懷疑了嗎?

盡信書不如無書大概也有這個(gè)道理吧人_八

檢測(cè)點(diǎn)3.1

(1)在DEBUG中,用"D0:0If”查看內(nèi)存,結(jié)果如下:

0000:00007080F030EF6030E2-0080801266202260

0000:00106226E6D6CC2E3C3B-ABBA000026066688

下面的程序執(zhí)行前,AX=0,BX=0,寫出每條匯編指令執(zhí)行完后相關(guān)寄存器中的值

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=POOCH

用DEBUG進(jìn)行驗(yàn)證:

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\DOCUME-1\000>debug

-e0000:0

0000:000068.7010.80A7,f000.308B.ef01.6070.3000.e2

0000:000816.0000.80AF.8003.128B.6601.2070.2200.60

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

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

-d0000:01f

0000:00007080F030EF6030E2-0080801266202260p..O.'O..…f

0000:00106226E6D6CC2E3C3B-ABBA000026066688b&...&.f.

-a

0DB4:0100movax,1

0DB4:0103movds,ax

0DB4:0105movax,[0000]

0DB4:0108movbx,[0001]

0DB4:01OCmovax,bx

0DB4:01OEmovax,[0000]

0DB4:0111movbx,[0002]

0DB4:0115addax,bx

0DB4:0117addax,[0004]

0DB4:011Bmovax,0

0DB4:011Emoval,[0002]

0DB4:0121movbx,0

0DB4:0124movbl,[000c]

0DB4:0128addal,bl

0DB4:012A

-r

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

DS=0DB4ES=0DB4SS=0DB4CS=0DB4IP=0100NVUPElPLNZNAPONC

0DB4:0100B80100MOVAX,0001

-t

AX=0001BX=OOOOCX=0000DX=0000SP=FFEEBP=OOOOSI=0000D1=0000

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

0DB4:01038ED8MOVDS,AX

-t

AX=0001BX=0000CX=0000DX=0000SP=FFEEBP=OOOOSI=0000D1=0000

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

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

AX=2662BX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=OOOOD1=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0108NVUPElPLNZNAPONC

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

-t

AX=2662BX=E626CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=010CNVUPElPLNZNAPONC

0DB4:010C89D8MOVAX,BX

-t

AX=E626BX=E626CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=010ENVUPElPLNZNAPONC

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

-t

AX=2662BX=E626CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

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

0DB4:01118B1E0200MOVBXJ0002]DS:0002=D6E6

-t

AX=2662BX=D6E6CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0115NVUPElPLNZNAPONC

0DB4:011501D8ADDAX,BX

-t

AX=FD48BX=D6E6CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0117NVUPElNGNZNAPENC

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

-t

AX=2C14BX=D6E6CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=011BNVUPElPLNZACPECY

0DB4:011BB80000MOVAX,0000

-t

AX=0000BX=D6E6CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=011ENVUPElPLNZACPECY

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

-t

AX=00E6BX=D6E6CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0121NVUPElPLNZACPECY

0DB4:0121BBOOOOMOVBX,0000

AX=00E6BX=0000CX=0000DX=0000SP=FFEEBP=OOOOSI=0000D1=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0124NVUPElPLNZACPECY

0DB4:01248A1E0C00MOVBLJOOOC]DS:000C=26

AX=00E6BX=0026CX=0000DX=0000SP=FFEEBP=OOOOSI=0000D1=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=0128NVUPElPLNZACPECY

0DB4:012800D8ADDAL,BL

-t

AX=000CBX=0026CX=0000DX=0000SP=FFEEBP=OOOOSI=0000DI=0000

DS=0001ES=0DB4SS=0DB4CS=0DB4IP=012ANVUPElPLNZNAPECY

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

檢測(cè)點(diǎn)3.1

(2)內(nèi)存中的情況如圖3.6所示

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

①寫出CPU執(zhí)行的指令序列(用匯編指令寫出)。

②寫出CPU執(zhí)行每條指令后,CS、IP和相關(guān)寄存器的數(shù)值。

③再次體會(huì):數(shù)據(jù)和程序仃區(qū)別嗎?如何確定內(nèi)存中的信息哪些是數(shù)據(jù),哪些是程序?

圖3.6內(nèi)存情況示意

指令序列CSIPDSAXBX

初始值2000h0000

1movax,6622h2000h3h06622h0

2jmp0ff0:0100ffOhlOOh06622h0

3movax,2000hffOh103h02000h0

4movds,axffOh105h2000h2000h0

5movax,[8]ffOh108h2000hc389h0

6movax,[2]ffOhlObh2000hea66h0

檢測(cè)點(diǎn)3.2

(1)補(bǔ)全下面的程序,使其可以將10000H-1000FH中的8個(gè)字,逆序拷貝到

20000H-2000FH中。

movax,1000H

movds,ax

movax,2000H

movss,ax

movSD,1Oh

push[0]

push[2]

push[4]

push[6]

push[8]

push[A]

push[C]

push[E]

檢測(cè)點(diǎn)3.2

(2)補(bǔ)全下而的程序,使其可以將10000H-1000FH中的8個(gè)字,逆序拷貝到

20000H-2000FH中。

movax,2000H

movds,ax

movaxJOOOH

movss,ax

movsp,0

pop同

pop[C]

pop[a]

pop[8]

pop[6]

pop[4]

pop[2]

pop[0]

實(shí)驗(yàn)2用機(jī)器指令和匯編指令編程

(1)使用DEBUG,將上面的程序段寫入內(nèi)存,逐條執(zhí)行,根據(jù)指令執(zhí)行后的實(shí)際運(yùn)行情

況填空。

movax,ffff

movds,ax

movax,2200

movss,ax

movsp,O1OO

movax,[O];ax=5BEAH

addax,[2];ax=5CCAH

movbx,[4];bx=31F0H

addbx,[6];bx=6122H

pushax;sp=OOFEH,修改的內(nèi)存單元地址是2200:00FE內(nèi)容為5CCAH

pushbx;sp=OOFCH,修改的內(nèi)存單元地址是2200Q0FC內(nèi)容為6122H

popax;sp=OOFCH,ax=6122H

popbx;sp=OOFEH,bx=5CCAH

push[4];sp=OOFEH,修改的內(nèi)存單元地址是2200:00FE內(nèi)容為31F0

push[6];sp=OOFCH,修改的內(nèi)存單元地址是2200:00FC內(nèi)容為2F32

此實(shí)驗(yàn)答案不定,需根據(jù)每臺(tái)機(jī)器的實(shí)際運(yùn)行情況。

Microsoft(R)WindowsDOS

(C)CopyrightMicrosoftCorp1990-2001.

C:\DOCUME-1\ADMINI-1>debug

-a

0C1C:0100movax,ffff

0C1C:0103movds,ax

0C1C:0105movax,2200

0C1C:0108movss,ax

0C1C:010Amovsp,0100

0C1C:010Dmovax,[0]

0C1C:0110addax,[2]

0C1C:0114movbx,[4]

0C1C:0118addbx,[6]

0C1C:011Cpushax

0C1C:011Dpushbx

0C1C:011Epopax

0C1C:011Fpopbx

0C1C:0120push[4]

0C1C:0124push[6]

0C1C:0128

AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0100NVUPElPLNZNAPONC

0C1C:0100B8FFFFMOVAX,FFFF

AX=FFFFBX=OOOOCX=OOOODX=OOOOSP=FFEEBP=OOOOSI=OOOODI=OOOO

DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0103NVUPElPLNZNAPONC

0C1C:01038ED8MOVDS,AX

-t

AX=FFFFBX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=0C1CCS=0C1CIP=0105NVUPElPLNZNAPONC

0C1C:0105B80022MOVAX,2200

-t

AX=2200BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000D1=0000

DS=FFFFES=0C1CSS=0C1CCS=0C1CIP=0108NVUPElPLNZNAPONC

0C1C:01088ED0MOVSS,AX

AX=2200BX=0000CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=010DNVUPElPLNZNAPONC

0C1C:010DA10000MOVAXJ0000]DS:0000=5BEA

-df

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

AX=5BEABX=0000CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=0110NVUPElPLNZNAPONC

0C1C:011003060200ADDAX,[0002]DS:0002=00E0

AX=5CCABX=0000CX=0000DX=0000SP=0100BP=0000SI=0000D1=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=0114NVUPElPLNZNAPENC

0C1C:01148B1E0400MOVBX,[0004]DS:0004=31F0

AX=5CCABX=31F0CX=OOOODX=OOOOSP=0100BP=OOOOSI=OOOODI=OOOO

DS=FFFFES=OC1CSS=2200CS=OC1CIP=0118NVUPElPLNZNAPENC

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

-t

AX=5CCABX=6122CX=OOOODX=OOOOSP=0100BP=OOOOSI=OOOOD1=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=011CNVUPElPLNZNAPENC

0C1C:011C50PUSHAX

-t

AX=5CCABX=6122CX=OOOODX=OOOOSP=OOFEBP=OOOOSI=OOOOD1=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=011DNVUPElPLNZNAPENC

0C1C:011D53PUSHBX

AX=5CCABX=6122CX=0000DX=0000SP=OOFCBP=OOOOSI=OOOOD1=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=011ENVUPElPLNZNAPENC

0C1C:011E58POPAX

AX=6122BX=6122CX=0000DX=0000SP=OOFEBP=OOOOSI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=011FNVUPElPLNZNAPENC

0C1C:011F5BPOPBX

-t

AX=6122BX=5CCACX=0000DX=0000SP=0100BP=0000SI=0000D1=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=0120NVUPElPLNZNAPENC

0C1C:0120FF360400PUSH[0004]DS:0004=31F0

-t

AX=6122BX=5CCACX=0000DX=0000SP=OOFEBP=OOOOSI=0000DI=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=0124NVUPElPLNZNAPENC

0C1C:0124FF360600PUSH[0006]DS:0006=2F32

-t

AX=6122BX=5CCACX=0000DX=0000SP=OOFCBP=OOOOSI=OOOOD1=0000

DS=FFFFES=0C1CSS=2200CS=0C1CIP=0128NVUPElPLNZNAPENC

0C1C:012816PUSHSS

實(shí)驗(yàn)4[bx]和loop的使用

(1)編程,向內(nèi)存0:200~0:23f依次傳遞數(shù)據(jù)0~63(3fh)。

這是個(gè)比較另類的做法,傳統(tǒng)做法請(qǐng)參考實(shí)驗(yàn)4(2)

assumecs:code

codesegment

movbx,20h

movss,bx

movsp,40h

movbx,3f3eh

movex,32

s:pushbx

subbx,202h

loops

movax,4c00h

int21h

codeends

end

C:\DOCUME-1\ADMINH1>debugsy4-2.exe

-d0:20023f

0000:02000000000000000000-0000000000000000

0000:02100000000000000000-0000000000000000

0000:02200000000000000000-0000000000000000

0000:02300000000000000000-0000000000000000

-u

0C79:0000BB2000MOVBX,0020

0C79:00038ED3MOVSS,BX

0C79:0005BC4000MOVSP,0040

0C79:0008BB3E3FMOVBX.3F3E

0C79:000BB92000MOVCX,0020

0C79:000E53PUSHBX

0C79:000F81EB0202SUBBX,0202

0C79:0013E2F9LOOP000E

0C79:0015B8004CMOVAX,4C00

0C79:0018CD21INT21

0C79:001A8600XCHGAL,[BX+SI]

0C79:001CFF508DCALL[BX+SI-73]

0C79:001F46INCSI

-g0015

AX=0000BX=FEFECX=0000DX=0000SP=0000BP=0000SI=0000D1=0000

DS=0C69ES=0C69SS=0020CS=0C79IP=0015NVUPElNGNZACPOCY

0C79:0015B8004CMOVAX,4C00

-d0:20023f

0000:02000001020304050607-08090AOBOCODOEOF................

0000:02101011121314151617-18191A1B1C1D1E1F................

0000:02202021222324252627-28292A2B2C2D2E2F!"#$%&'()*+,-./

0000:02303031323334353637-38393A3B3C3D3E3F0123456789:;<=>?

AX=4C00BX=FEFECX=0000DX=0000SP=0000BP=OOOOSI=0000DI=0000

DS=0C

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論