鱼C论坛

 找回密码
 立即注册
查看: 4658|回复: 13

[汇编作业] Assembly language 检测点2.3

[复制链接]
发表于 2013-7-29 15:24:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 狂潮丶 于 2013-10-30 21:16 编辑

检测点2.3 psb10639997045109872338.jpg
下面的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是只读的你就不去验证了吗?如何验证呢?
我觉得这个实验最大的好处不是让我们验证了这个知识点,而是提醒我们要有怀疑的精神,怀疑之后再去验证才能跟深刻的理解知识,提升自己的能力,甚至还会发现有些书上描述的不准确甚至错误的地方。
  
--引用这几本书综合研究的三个问题:
都再用,我们就非得用吗?
规定了,我们就只知道遵守吗?
司空见惯,我们就不怀疑了吗?
  
尽信书不如无书大概也有这个道理吧^_^


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-20 22:14:53 | 显示全部楼层
谢谢楼主,  有那东西练手的,谢谢分享, 咱不管是不是教材上的东西。  
   拿 出来就是好东西…… ……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-8 14:46:54 | 显示全部楼层
楼主是个好人 好人一生平安
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-19 01:03:01 | 显示全部楼层
LZ,请教:是不是只要CS:IP指向内存进行读取指令,指令进入指令缓冲器,接着IP都会加指令长度再赋值IP啊?(不管add或者sub等任何指令){:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-27 14:03:02 | 显示全部楼层
下面这个实验中:
(2)将下面的3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
     mov ax,1
     add ax,ax
     jmp 2000:0003
在输入第四个t命令时ax寄存器中的值不是就应该变为0004了么,为什么还是0002,我用dosbox做出来的结果是0004,求解释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-27 14:03:33 | 显示全部楼层
本帖最后由 小楼,一夜风雨 于 2013-10-27 14:14 编辑

下面这个实验中:
(2)将下面的3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
     mov ax,1
     add ax,ax
     jmp 2000:0003
在输入第四个t命令时ax寄存器中的值不是就应该变为0004了么,为什么还是0002,我用dosbox做出来的结果是0004,求解释@小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-27 23:03:09 | 显示全部楼层
本帖最后由 狂潮丶 于 2013-10-27 23:06 编辑


         鱼油,你好:


          QQ截图20131027230217.png


  第四个t执行的时候,ax里面的内容是等于4。


mov ax,2
add ax,ax
add ax,ax
 你的代码有问题。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-30 12:20:28 | 显示全部楼层
狂潮丶 发表于 2013-10-27 23:03
鱼油,你好:


对啊,我的也是4,只是楼主的为2,我怀疑楼主写错了所以问问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-30 12:25:49 | 显示全部楼层
本帖最后由 小楼,一夜风雨 于 2013-10-30 21:45 编辑

。。。。。。根据你付的答案。。。。。。。。                                                               根据你附的答案,第四次执行t命令后ax显示结果是0002h

楼主你附的答案的截图

楼主你附的答案的截图

评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +2 收起 理由
狂潮丶 + 2 + 2 + 2 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-13 12:25:34 | 显示全部楼层
收藏每一次的监测点答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-13 12:26:19 | 显示全部楼层
bigshan 发表于 2013-11-13 12:25
收藏每一次的监测点答案

加油。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-2 00:44:29 | 显示全部楼层
共同学习一下!!
2014-02-02 00:42:54 的屏幕截图.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-28 05:53:40 | 显示全部楼层
2的8次方等于256,   ax = 0004H 计算结果不对的?怎么看结果啊?  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-28 05:59:23 | 显示全部楼层
瞬间秒懂,原来还没循环第8次 t.  ax  = 0100H 转换成十进制 256
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 02:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表