QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

VIP至尊会员

Rank: 15Rank: 15Rank: 15

积分
255
查看: 301|回复: 6

[汇编作业] 检测点3.1

[复制链接]
最佳答案
1 
累计签到:106 天
连续签到:1 天
奥普瓯江 发表于 2018-5-28 23:30:36 3016 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

x
本帖最后由 奥普瓯江 于 2018-5-29 00:18 编辑

(1)在Debug中,用“d 0000:0000 1f”查看内存,结果如下
0000:0000 70 80 F0 30  EF  60 30  E2-00   80  80 12 66 20 22 60
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88
下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值。
mov ax, 1
mov ds, ax
mov ax, [0000]  AX = 2662
mov bx, [0001]  BX = E626
mov ax, bx         AX = E626
mov bx, [0000]  AX = 2662
mov bx, [0002]  BX = D6E6
add  ax, bx         AX = FD48
add  ax, [0004]  AX = 2C14
mov ax, 0           AX = 0000
mov ax, [0002]  AX = 00E6
mov bx, 0           BX = 0000
mov bl, [000C]  BX = 0026
add  al, bl           AX = 000C

(2)内存中的情况如图3.6所示
各寄存器的初始值:CS = 2000H, IP = 0, DS = 1000H, AX = 0, BX = 0;
1 写出CPU执行的指令序列(用汇编指令写出)。
2 写出CPU 执行每条指令后,CS、IP和相关寄存器中的数值。
3 再次体会:数据和程序有区别吗?如何确定内存中的信息那些是数据,那些是程序?
mov ax, 6622H    把6622H付给ax寄存器
jmp 0ff0:0100      跳转到内存地址10000H 段地址是0ff0偏移地址0100
mov ax, 2000H    把2000H付给ax寄存器
mov ds, ax            把通用寄存器ax中的数据2000H付给ds寄存器
mov ax, [0008]     把数据段地址2000H内存单元地址0008中的数据C389付给ax每个ax接受一个字两个字节的数据如果指定的是89那调入到ax中就缺少一个字节所以自动加上下一个地址段中的字节C3。
mov ax, [0002]     把数据段地址2000H内存单元地址0002中的数据付给ax每个ax接受一个字两个字节的数据道理同上。

mov ax, 6622H    AX:6622  BX:0000 CS:2000 IP:0003  DS:1000
jmp 0ff0:0100      AX:6622  BX:0000 CS:0ff0  IP:0100  DS:1000
mov ax, 2000H    AX:2000  BX:0000 CS:0ff0  IP:0103   DS:1000
mov ds, ax           AX:2000   BX:0000 CS:0ff0  IP:0105  DS:2000
mov ax, [0008]    AX:C389  BX:0000 CS:0ff0  IP:0108  DS:2000
mov ax, [0002]    AX:EA66  BX:0000 CS:0ff0  IP:010B DS:2000

数据和程序在内存中储存时是没有区别的,当被不同的寄存器调用才会产生区别(这句话我自己也没有自信是不是对,还请各位大神耐心指导)
楼层
跳转到指定楼层
最佳答案
0 

尚未签到

Growlanser 发表于 2018-6-3 18:37:31 | 显示全部楼层
楼主你好,请问jmp 0ff0:0100   就跳转到了10000H
最佳答案
0 
累计签到:499 天
连续签到:2 天
dys376820508 发表于 2018-6-3 20:08:44 | 显示全部楼层
Growlanser 发表于 2018-6-3 18:37
楼主你好,请问jmp 0ff0:0100   就跳转到了10000H

ff00h + 100h = 10000h
最佳答案
1 
累计签到:106 天
连续签到:1 天
奥普瓯江  楼主| 发表于 2018-6-7 17:41:43 | 显示全部楼层
Growlanser 发表于 2018-6-3 18:37
楼主你好,请问jmp 0ff0:0100   就跳转到了10000H

jum跳转应该是0ff0*16+0100 = 10000
最佳答案
1 
累计签到:106 天
连续签到:1 天
奥普瓯江  楼主| 发表于 2018-6-7 17:42:16 | 显示全部楼层

三楼这个应该是错的吧
最佳答案
0 
累计签到:499 天
连续签到:2 天
dys376820508 发表于 2018-6-8 21:13:47 | 显示全部楼层
奥普瓯江 发表于 2018-6-7 17:42
三楼这个应该是错的吧

和四楼一个意思
最佳答案
0 

尚未签到

Growlanser 发表于 2018-6-10 21:45:49 | 显示全部楼层

后面看了视频,回头看秒懂,学习啦

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.3 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-6-21 23:41

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