《汇编语言》第三章-寄存器(内存访问) 检测点答案

检测点3.1:

*所有进制为16进制*
*为狗北特制。*

1.

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190918174155140.png)
mov ax,1
mov ds,ax
mov ax,[0000] ax=____(2662)<此处将“0001:0”处的字型数据传入ax,故应为2662>
mov ax,[0001] bx=____ (E626) <同上理>
mov ax,bx ax=____(E626) <将bx中数据传入ax>
mov ax,[0000] ax=____(2662)
mov bx,[0002] bx=____(D6E6)
add ax,bx ax=____(FD48) <将ax,bx中的数据相加再送入ax中>
add ax,[0004] ax=____(2C14)
mov ax,0 ax=____(0)
mov al,[0002] ax=____(00E6) <将‘1:2’的字节单元传入到ax的低字节中>
mov bx,0 bx=____(0)
mov bl,[000c] bx=____(0026)
add al,bl ax=____(000c) <将al,bl相加后等于10c,溢出了,此处为字节运算,故ax中为000c>

2.

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190918180016269.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/20190918180030798.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ltcHRfZ29mbHk=,size_16,color_FFFFFF,t_70)
初始cs:ip=2000:0,于是,执行顺序是:
mov ax, 6622 <指令读取后:ip=3----指令执行后:ax=6622>
jmp 0ff0:0100<指令读取后:ip=8----指令执行后:cs=offo,ip=0100--cs:ip=1000:0>
mov ax,2000 <指令读取后:ip=103----指令执行后:ax=2000>
mov ds,ax <指令读取后:ip=105----指令执行后:ds=2000>
mov ax,[0008] <指令读取后:ip=108----指令执行后:ax=c389>
mov ax,[0002] <指令读取后:ip=10b----指令执行后:ax=EA66>

内存中的数据和程序没有任何区别,都是以二进制的形式存放,关键看如何识别,例如cs:ip指向的被cpu识别为指令,被ds:[adress]指向的被识别为数据。

检测点3.2

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190924172109201.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ltcHRfZ29mbHk=,size_16,color_FFFFFF,t_70)
mov ax,1000h
mov ds,ax
mov ss,1000h
mov sp,10h<此处将1000:0-1000:0f作为栈段;ss:sp应该指向栈顶,此时栈为空,指向栈最高地址的下一个地址单元。>
push [0]
push [2]
push [4]
push [6]
(2)补全下面的程序,使其可以将10000-10000f中的8个字,逆序复制到20000-2000f中
mov ax,2000h
mov ds,ax
mov ss,1000h
mov sp,0h<此处将2000:0-2000:f设为栈段,此时栈满,ss:sp应指向栈的最低地址即:2000:0>

实验二:用机器指令和汇编指令编程

(1)写入程序后,观察情况填空:
mov ax,ffff
mov ds,ax
mov ax,2200
mov ss,ax
mov sp,0100
mov ax,[0]		;ax=___(c0ea)
add ax,[2]		;ax=___(c0fc)
mov bx,[4]		;bx=___(30f0)
add bx,[6]		;bx=___(6021)
push ax			;sp=___(00fe);修改的内存单元地址是2200:fe,内容为c0fc
push bx			;sp=___(00fc);修改的内存单元地址是2200:fc,内容为6021
pop ax				;sp=___(00fe);ax=___(6021)
pop bx				;sp=___(0100);ax=___(c0fc)
push [4]			;sp=___(00fe);修改的内存单元地址是2200:fe,内容为30f0
push [6]			;sp=___(00fe);修改的内存单元地址是2200:fc,内容为2f31

(2)观察实验过程,分析内容变化的原因?
如大多数初学者一样,此处我也不是太理解。但是,我观察内容改变后的部分发现,其与cs:ip内容一致。所以我推测是cpu在执行mov ss,ax指令时把cs:ip连同它所指向的内容覆盖了ss:sp中的内容;

*以上,为《汇编语言》第三章的检测点,此过程我学习了大概一周,因为用的都是比较零碎的时间,所以进度比较慢。就是不知道狗北学到了哪里。*
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值