汇编语言知识学习第二版答案解析_第1页
汇编语言知识学习第二版答案解析_第2页
汇编语言知识学习第二版答案解析_第3页
免费预览已结束,剩余61页可下载查看

下载本文档

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

文档简介

1、.汇 编语言第二版答案- 王爽检测点 1.1(1 )1 个 CPU 的寻址能力为 8KB ,那么它的地址总线的宽度为13 位。(2 )1KB 的存储器有1024个存储单元,存储单元的编号从0 到 1023。( 3 )1KB 的存储器可以存储 8192 ( 213 ) 个 bit , 1024 个 Byte 。(4 )1GB 是 1073741824( 230 ) 个 Byte 、 1MB 是 1048576( 220 ) 个 Byte 、1KB 是 1024 ( 210 )个 Byte 。(5 )8080 、8088 、80296 、80386的地址总线宽度分别为16 根、 20 根、 24

2、根、 32 根,则它们的寻址能力分别为: 64(KB)、1 (MB )、16(MB )、4 (GB)。(6 )8080、 8088 、 8086 、80286 、80386的数据总线宽度分别为8 根、8 根、16 根、16 根、 32根。则它们一次可以传送的数据为: 1 (B)、 1 (B)、 2 (B)、 2 (B)、4 (B)。(7 )从内存中读取1024 字节的数据, 8086 至少要读512次,80386至少要读256次。(8 )在存储器中,数据和程序以二进制形式存放。解题过程:(1 )1KB=1024B, 8KB=1024B*8=2N, N=13 。.(2 )存储器的容量是以字节为最

3、小单位来计算的,1KB=1024B。(3 )8Bit=1Byte,1024Byte=1KB( 1KB=1024B=1024B*8Bit)。(4 )1GB=1073741824B(即 230 )1MB=1048576B(即 220 )1KB=1024B (即 210 )。(5 )一个 CPU 有 N 根地址线,则可以说这个CPU 的地址总线的宽度为N 。这样的CPU最多可以寻找2 的 N 次方个内存单元。(一个内存单元=1Byte )。(6 )8 根数据总线一次可以传送8 位二进制数据(即一个字节)。(7 )8086 的数据总线宽度为16 根(即一次传送的数据为2B ) 1024B/2B=512

4、,同理1024B/4B=256。( 8 )在存储器中指令和数据没有任何区别,都是二进制信息。检测点 2.1(1) 写出每条汇编指令执行后相关寄存器中的值。mov ax,62627AX=F4A3Hmov ah,31HAX=31A3Hmov al,23HAX=3123Hadd ax,axAX=6246Hmov bx,826CHBX=826CH.mov cx,axmov ax,bxadd ax,bxmov al,bhmov ah,bladd ah,ahadd al,6add al,almov ax,cxCX=6246HAX=826CHAX=04D8HAX=0482HAX=6C82HAX=D882HA

5、X=D888HAX=D810HAX=6246HMicrosoft(R) Windows DOS(C)Copyright Microsoft Corp 1990-2001.C:DOCUME1ADMINI1>debug-a0C1C:0100 mov ax,f4a3.0C1C:0103 mov ah,310C1C:0105 mov al,230C1C:0107 add ax,ax0C1C:0109 mov bx,826c0C1C:010C mov cx,ax0C1C:010E mov ax,bx0C1C:0110 add ax,bx0C1C:0112 mov al,bh0C1C:0114 mo

6、v ah,bl0C1C:0116 add ah,ah0C1C:0118 add al,60C1C:011A add al,al0C1C:011C mov ax,cx0C1C:011E-r.AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0100NV UP EI PL NZ NA PO NC0C1C:0100 B8A3F4MOVAX,F4A3-tAX=F4A3BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CE

7、S=0C1CSS=0C1CCS=0C1CIP=0103NV UP EI PL NZ NA PO NC0C1C:0103 B431MOVAH,31-tAX=31A3BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0105NV UP EI PL NZ NA PO NC0C1C:0105 B023MOVAL,23-tAX=3123BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000.DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=

8、0107NV UP EI PL NZ NA PO NC0C1C:0107 01C0ADDAX,AX-tAX=6246BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0109NV UP EI PL NZ NA PO NC0C1C:0109 BB6C82MOVBX,826C-tAX=6246BX=826CCX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010CNV UP EI PL NZ N

9、A PO NC0C1C:010C 89C1MOVCX,AX-tAX=6246BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010ENV UP EI PL NZ NA PO NC.0C1C:010E 89D8MOVAX,BX-tAX=826CBX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0110NV UP EI PL NZ NA PO NC0C1C:0110 01D8AD

10、DAX,BX-tAX=04D8BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0112OV UP EI PL NZ AC PE CY0C1C:0112 88F8MOVAL,BH-tAX=0482BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0114OV UP EI PL NZ AC PE CY0C1C:0114 88DCMOVAH,BL.-tAX=6C82BX=826CC

11、X=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0116OV UP EI PL NZ AC PE CY0C1C:0116 00E4ADDAH,AH-tAX=D882BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0118OV UP EI NG NZ AC PE NC0C1C:0118 0406ADDAL,06-tAX=D888BX=826CCX=6246DX=0000SP=FFEEBP=0

12、000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011ANV UP EI NG NZ NA PE NC0C1C:011A 00C0ADDAL,AL-t.AX=D810BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011COV UP EI PL NZ AC PO CY0C1C:011C 89C8MOVAX,CX-tAX=6246BX=826CCX=6246DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1

13、CES=0C1CSS=0C1CCS=0C1CIP=011EOV UP EI PL NZ AC PO CY0C1C:011E 0B0CORCX,SIDS:0000=20CD-q检测点 2.1(2) 只能使用目前学过的汇编指令,最多使用4 条指令,编程计算2 的 4 次方。movax,2AX=2addax,axAX=4addax,axAX=8.addax,axAX=16Microsoft(R) Windows DOS(C)Copyright Microsoft Corp 1990-2001.C:DOCUME1ADMINI1>debug-a0C1C:0100 mov ax,20C1C:0103

14、 add ax,ax0C1C:0105 add ax,ax0C1C:0107 add ax,ax0C1C:0109-rAX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0100NV UP EI PL NZ NA PO NC.0C1C:0100 B80200MOVAX,0002-tAX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0103NV UP E

15、I PL NZ NA PO NC0C1C:0103 01C0ADDAX,AX-tAX=0004BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0105NV UP EI PL NZ NA PO NC0C1C:0105 01C0ADDAX,AX-tAX=0008BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0107NV UP EI PL NZ NA PO NC0C1C:010

16、7 01C0ADDAX,AX.-tAX=0010BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0109NV UP EI PL NZ AC PO NC0C1C:0109 20881615ANDBX+SI+1516,CLDS:1516=00-q检测点 2.2(1) 给定段地址为 0001H ,仅通过变化偏移地址寻址, CPU 的寻址范围为 0010H 到1000FH。解题过程:物理地址 SA*16+EAEA 的变化范围为0hffffh物理地址范围为(SA*16+0h)(SA*16+ff

17、ffh)现在 SA=0001h,那么寻址范围为(0001h*16+0h)(0001h*16+ffffh).=0010h1000fh检测点 2.2(2) 有一数据存放在内存 20000H 单元中,现给定段地址为 SA ,若想用偏移地址寻到此单元。则 SA 应满足的条件是:最小为1001H,最大为2000H。当段地址给定为1001H以下和2000H以上, CPU 无论怎么变化偏移地址都无法寻到20000H单元。解题过程:物理地址 SA*16+EA20000h SA*16+EASA=(20000h-EA)/16=2000h-EA/16EA 取最大值时 ,SA=2000h-ffffh/16=1001h

18、,SA为最小值EA 取最小值时 ,SA=2000h-0h/16=2000h,SA为最大值这里的 ffffH/16=fffh是通过 WIN 自带计算器算的.按位移来算确实应该为fff.fh, 这里小数点后的f 应该是省略了单就除法来说,应有商和余数,但此题要求的是地址最大和最小,所以余数忽略了如果根据位移的算法(段地址*16 16 进制左移一位),小数点后应该是不能省略的我们可以反过来再思考下,如果SA 为 1000h的话,小数点后省略SA=1000h,EA取最大 ffffh ,物理地址为1ffffh ,将无法寻到20000H单元这道题不应看成是单纯的计算题检测点 2.3下面的 3 条指令执行后

19、,cpu 几次修改IP?都是在什么时候?最后IP 中的值是多少?mov ax,bxsub ax,axjmp ax答:一共修改四次第一次:读取mov ax,bx之后.第二次:读取第三次:读取第四次:执行最后 IP 的值为sub ax,ax之后jmp ax之后jmp ax修改 IP0000H ,因为最后ax 中的值为0000H ,所以 IP 中的值也为0000H实验一查看 CPU 和内存,用机器指令和汇编指令编程2 实验任务(1) 使用 Debug ,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU 中相关寄存器中内容的变化。机器码汇编指令寄存器b8 20 4emov ax,4E20H

20、ax=4E20H05 16 14add ax,1416Hax=6236Hbb 00 20mov BX,2000Hbx=2000H01 d8add ax,bxax=8236H89 c3mov bx,axbx=8236H01 d8add ax,bxax=046CH.b81a00mov ax,001AHax=001AHbb 26 00mov bx,0026Hbx=0026H00 d8add al,blax=0040H00 dcadd ah,blax=2640H00 c7add bh,albx=4026Hb400mov ah,0ax=0040H00 d8add al,blax=0066H049cadd

21、 al,9CHax=0002HMicrosoft(R) Windows DOS(C)Copyright Microsoft Corp 1990-2001.C:DOCUME1ADMINI1>debug-a0C1C:0100 mov ax,4e200C1C:0103 add ax,1416.0C1C:0106 mov bx,20000C1C:0109 add ax,bx0C1C:010B mov bx,ax0C1C:010D add ax,bx0C1C:010F mov ax,001a0C1C:0112 mov bx,00260C1C:0115 add al,bl0C1C:0117 add

22、ah,bl0C1C:0119 add bh,al0C1C:011B mov ah,00C1C:011D add al,bl0C1C:011F add al,9c0C1C:0121-rAX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000.DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0100NV UP EI PL NZ NA PO NC0C1C:0100 B8204EMOVAX,4E20-tAX=4E20BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=

23、0C1CSS=0C1CCS=0C1CIP=0103NV UP EI PL NZ NA PO NC0C1C:0103 051614ADDAX,1416-tAX=6236BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0106NV UP EI PL NZ NA PE NC0C1C:0106 BB0020MOVBX,2000-tAX=6236BX=2000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C

24、1CIP=0109NV UP EI PL NZ NA PE NC.0C1C:0109 01D8ADDAX,BX-tAX=8236BX=2000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010BOV UP EI NG NZ NA PE NC0C1C:010B 89C3MOVBX,AX-tAX=8236BX=8236CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010DOV UP EI NG NZ

25、 NA PE NC0C1C:010D 01D8ADDAX,BX-tAX=046CBX=8236CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=010FOV UP EI PL NZ NA PE CY0C1C:010F B81A00MOVAX,001A.-tAX=001ABX=8236CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0112OV UP EI PL NZ NA PE CY0C1C:0112

26、BB2600MOVBX,0026-tAX=001ABX=0026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0115OV UP EI PL NZ NA PE CY0C1C:0115 00D8ADDAL,BL-tAX=0040BX=0026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0117NV UP EI PL NZ AC PO NC0C1C:0117 00DCADDAH,BL-t.AX=26

27、40BX=0026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0119NV UP EI PL NZ NA PO NC0C1C:0119 00C7ADDBH,AL-tAX=2640BX=4026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011BNV UP EI PL NZ NA PO NC0C1C:011B B400MOVAH,00-tAX=0040BX=4026CX=0000DX=0000S

28、P=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011DNV UP EI PL NZ NA PO NC0C1C:011D 00D8ADDAL,BL-tAX=0066BX=4026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000.DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=011FNV UP EI PL NZ NA PE NC0C1C:011F 049CADDAL,9C-tAX=0002BX=4026CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=

29、0000DS=0C1CES=0C1CSS=0C1CCS=0C1CIP=0121NV UP EI PL NZ AC PO CY0C1C:0121 D3990075RCRWORD PTRBX+DI+7500,CLDS:B526=0000-q实验一查看 CPU 和内存,用机器指令和汇编指令编程(2) 将下面的 3 条指令写入从 2000 :0 开始的内存单元中, 利用这 3 条指令计算 2 的 8 次方。mov ax,1add ax,axjmp 2000:0003Microsoft(R) Windows DOS.(C)Copyright Microsoft Corp 1990-2001.C:DOCU

30、ME1ADMINI1>debug-a 2000:02000:0000 mov ax,12000:0003 add ax,ax2000:0005 jmp 2000:00032000:0007-r csCS 0C1C:2000-r ipIP 0100:0000-rAX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000.DS=0C1CES=0C1CSS=0C1CCS=2000IP=0000NV UP EI PL NZ NA PO NC2000:0000 B80100MOVAX,0001-tAX=0001BX=0000CX=0000DX=

31、0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NV UP EI PL NZ NA PO NC2000:0003 01C0ADDAX,AX-tAX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=2000IP=0005NV UP EI PL NZ NA PO NC2000:0005 EBFCJMP0003-tAX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000

32、DI=0000DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NV UP EI PL NZ NA PO NC.2000:0003 01C0ADDAX,AX-tAX=0002BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NV UP EI PL NZ NA PO NC2000:0003 01C0ADDAX,AX-tAX=0004BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS

33、=0C1CCS=2000IP=0005NV UP EI PL NZ NA PO NC2000:0005 EBFCJMP0003-tAX=0004BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NV UP EI PL NZ NA PO NC2000:0003 01C0ADDAX,AX.-tAX=0008BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=2000IP=0005NV UP

34、 EI PL NZ NA PO NC2000:0005 EBFCJMP0003-tAX=0008BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0C1CES=0C1CSS=0C1CCS=2000IP=0003NV UP EI PL NZ NA PO NC2000:0003 01C0ADDAX,AX-q实验一查看 CPU 和内存,用机器指令和汇编指令编程(3) 查看内存中的内容PC 主板上的ROM 中有个一出产日期,在内存FFF00H-FFFFFH的某几个单元中,请找到这个出产日期并试图改变它。.Microsoft(R) Windows D

35、OS(C)Copyright Microsoft Corp 1990-2001.C:DOCUME1ADMINI1>debug-d ffff:0 fFFFF:0000EA 5B E0 00 F0 31 32 2F-32 35 2F 30 37 00 FC 59.12/25/07.Y-q地址 C0000FFFFF的内存单元为只读存储器,写入数据操作是无效的。因此出产日期无法改变。下面内容摘自于网上还有另一种情况,如果你发现你能修改ROM 中的生产日期,那么原因如下:每个计算机的结构都不一样,教材考虑的是普通8086PC机上的效果,个别计算机的效果可能不同。也就是说在你的计算机中这个内存是可修

36、改的.所以,认为所有的计算机某些地址的内存不能修改是片面的。书上说 rom是只读的你就不去验证了吗?如何验证呢?我觉得这个实验最大的好处不是让我们验证了这个知识点,而是提醒我们要有怀疑的精神,怀疑之后再去验证才能跟深刻的理解知识,提升自己的能力, 甚至还会发现有些书上描述的不准确甚至错误的地方。- 引用这几本书综合研究的三个问题:都再用,我们就非得用吗?规定了,我们就只知道遵守吗?司空见惯,我们就不怀疑了吗?尽信书不如无书大概也有这个道理吧_检测点 3.1(1)在 DEBUG 中,用 "D 0:0 lf"查看内存 ,结果如下 :.0000:0000 70 80 F0 30

37、EF 60 30 E2-00 80 80 12 66 20 22 600000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值mov ax,1mov ds,axmov ax,0000ax= 2662Hmov bx,0001bx= E626Hmov ax,bxax= E626Hmov ax,0000ax= 2662Hmov bx,0002bx= D6E6Hadd ax,bxax= FD48Hadd ax,0004ax= 2C14Hmov ax,0ax=0mov al,0002ax= 00e6Hmov bx,0bx=0.mov bl,000c add al,blbx= 0026Hax= 000CH用 DEBUG 进行验证:Microsoft(R) Windows DOS(C)Copyright Microsoft Corp 1990-2001.C:DOCUME1000>debug-e 0000:00000:000068.7010.80A7.f000.308B.ef01.6070.3000.e20000:000816.0000.80AF.8003.128B.6601.2070.2200.600000:001

温馨提示

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

评论

0/150

提交评论