|  | 
 
| 
本帖最后由 狂潮丶 于 2013-10-30 21:16 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 检测点2.3
   下面的3条指令执行后,cpu几次修改IP?都是在什么时候?最后IP中的值是多少?
 mov ax,bx
 sub ax,ax
 jmp ax
 
 答:一共修改四次
 第一次:读取mov ax,bx之后
 第二次:读取sub ax,ax之后
 第三次:读取jmp ax之后
 第四次:执行jmp ax修改IP
 最后IP的值为0000H,因为最后ax中的值为0000H,所以IP中的值也为0000H
 
 实验一 查看CPU和内存,用机器指令和汇编指令编程
 2实验任务
 (1)使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化。
 机器码          汇编指令         寄存器
 b8 20 4e      mov ax,4E20H     ax=4E20H
 05 16 14      add ax,1416H     ax=6236H
 bb 00 20      mov BX,2000H     bx=2000H
 01 d8         add ax,bx        ax=8236H
 89 c3         mov bx,ax        bx=8236H
 01 d8         add ax,bx        ax=046CH
 b8 1a 00      mov ax,001AH     ax=001AH
 bb 26 00      mov bx,0026H     bx=0026H
 00 d8         add al,bl        ax=0040H
 00 dc         add ah,bl        ax=2640H
 00 c7         add bh,al        bx=4026H
 b4 00         mov ah,0         ax=0040H
 00 d8         add al,bl        ax=0066H
 04 9c         add al,9CH       ax=0002H
 
 Microsoft(R) Windows DOS
 (C)Copyright Microsoft Corp 1990-2001.
 C:DOCUME~1ADMINI~1>debug
 -a
 0C1C:0100 mov ax,4e20
 0C1C:0103 add ax,1416
 0C1C:0106 mov bx,2000
 0C1C:0109 add ax,bx
 0C1C:010B mov bx,ax
 0C1C:010D add ax,bx
 0C1C:010F mov ax,001a
 0C1C:0112 mov bx,0026
 0C1C:0115 add al,bl
 0C1C:0117 add ah,bl
 0C1C:0119 add bh,al
 0C1C:011B mov ah,0
 0C1C:011D add al,bl
 0C1C:011F add al,9c
 0C1C:0121
 -r
 AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=0100   NV UP EI PL NZ NA PO NC
 0C1C:0100 B8204E        MOV     AX,4E20
 -t
 AX=4E20  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=0103   NV UP EI PL NZ NA PO NC
 0C1C:0103 051614        ADD     AX,1416
 -t
 AX=6236  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=0106   NV UP EI PL NZ NA PE NC
 0C1C:0106 BB0020        MOV     BX,2000
 -t
 AX=6236  BX=2000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=0109   NV UP EI PL NZ NA PE NC
 0C1C:0109 01D8          ADD     AX,BX
 -t
 AX=8236  BX=2000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=010B   OV UP EI NG NZ NA PE NC
 0C1C:010B 89C3          MOV     BX,AX
 -t
 AX=8236  BX=8236  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=010D   OV UP EI NG NZ NA PE NC
 0C1C:010D 01D8          ADD     AX,BX
 -t
 AX=046C  BX=8236  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=010F   OV UP EI PL NZ NA PE CY
 0C1C:010F B81A00        MOV     AX,001A
 -t
 AX=001A  BX=8236  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=0112   OV UP EI PL NZ NA PE CY
 0C1C:0112 BB2600        MOV     BX,0026
 -t
 AX=001A  BX=0026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=0115   OV UP EI PL NZ NA PE CY
 0C1C:0115 00D8          ADD     AL,BL
 -t
 AX=0040  BX=0026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=0117   NV UP EI PL NZ AC PO NC
 0C1C:0117 00DC          ADD     AH,BL
 -t
 AX=2640  BX=0026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=0119   NV UP EI PL NZ NA PO NC
 0C1C:0119 00C7          ADD     BH,AL
 -t
 AX=2640  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=011B   NV UP EI PL NZ NA PO NC
 0C1C:011B B400          MOV     AH,00
 -t
 AX=0040  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=011D   NV UP EI PL NZ NA PO NC
 0C1C:011D 00D8          ADD     AL,BL
 -t
 AX=0066  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=011F   NV UP EI PL NZ NA PE NC
 0C1C:011F 049C          ADD     AL,9C
 -t
 AX=0002  BX=4026  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=0C1C  IP=0121   NV UP EI PL NZ AC PO CY
 0C1C:0121 D3990075      RCR     WORD PTR [BX+DI+7500],CL           DS:B526=0000
 -q
 实验一 查看CPU和内存,用机器指令和汇编指令编程
 (2)将下面的3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
 mov ax,1
 add ax,ax
 jmp 2000:0003
 
 Microsoft(R) Windows DOS
 (C)Copyright Microsoft Corp 1990-2001.
 C:DOCUME~1ADMINI~1>debug
 -a 2000:0
 2000:0000 mov ax,1
 2000:0003 add ax,ax
 2000:0005 jmp 2000:0003
 2000:0007
 -r cs
 CS 0C1C
 :2000
 -r ip
 IP 0100
 :0000
 -r
 AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=2000  IP=0000   NV UP EI PL NZ NA PO NC
 2000:0000 B80100        MOV     AX,0001
 -t
 AX=0001  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
 2000:0003 01C0          ADD     AX,AX
 -t
 AX=0002  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=2000  IP=0005   NV UP EI PL NZ NA PO NC
 2000:0005 EBFC          JMP     0003
 -t
 AX=0002  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
 2000:0003 01C0          ADD     AX,AX
 -t
 AX=0004  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
 2000:0003 01C0          ADD     AX,AX
 -t
 AX=0004  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=2000  IP=0005   NV UP EI PL NZ NA PO NC
 2000:0005 EBFC          JMP     0003
 -t
 AX=0004  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
 2000:0003 01C0          ADD     AX,AX
 -t
 AX=0008  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=2000  IP=0005   NV UP EI PL NZ NA PO NC
 2000:0005 EBFC          JMP     0003
 -t
 AX=0008  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
 DS=0C1C  ES=0C1C  SS=0C1C  CS=2000  IP=0003   NV UP EI PL NZ NA PO NC
 2000:0003 01C0          ADD     AX,AX
 -q
 实验一 查看CPU和内存,用机器指令和汇编指令编程
 (3) 查看内存中的内容
 PC主板上的ROM中有个一出产日期,在内存FFF00H-FFFFFH的某几个单元中,请找到这个出产日期并试图改变它。
 
 Microsoft(R) Windows DOS
 (C)Copyright Microsoft Corp 1990-2001.
 C:DOCUME~1ADMINI~1>debug
 -d ffff:0 f
 FFFF:0000  EA 5B E0 00 F0 31 32 2F-32 35 2F 30 37 00 FC 59   .[...12/25/07..Y
 -q
 
 地址C0000~FFFFF的内存单元为只读存储器,写入数据操作是无效的。
 因此出产日期无法改变。
 
 
 下面内容摘自于网上
 还有另一种情况,如果你发现你能修改ROM中的生产日期,那么原因如下:
 每个计算机的结构都不一样,教材考虑的是普通8086PC机上的效果,个别计算机的效果可能不同。
 也就是说 在你的计算机中 这个内存是可修改的
 所以,认为所有的计算机某些地址的内存不能修改是片面的。
 
 书上说rom是只读的你就不去验证了吗?如何验证呢?
 我觉得这个实验最大的好处不是让我们验证了这个知识点,而是提醒我们要有怀疑的精神,怀疑之后再去验证才能跟深刻的理解知识,提升自己的能力,甚至还会发现有些书上描述的不准确甚至错误的地方。
 
 --引用这几本书综合研究的三个问题:
 都再用,我们就非得用吗?
 规定了,我们就只知道遵守吗?
 司空见惯,我们就不怀疑了吗?
 
 尽信书不如无书大概也有这个道理吧^_^
 
 
 | 
 |