博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实验二
阅读量:4598 次
发布时间:2019-06-09

本文共 1016 字,大约阅读时间需要 3 分钟。

实验任务(1)

用e命令修改0021:0-0021:f的数据,并用d命令检查是否正确 

 

 

 

用a命令输入指令

 

 

 

逐步进行单步调试

 

 

 

 

 

 

下图是我课本上理论的结果

 

 

 

 

-------------------------------------------------------------------------------

实验任务(2)

用a命令输入下图7行命令,并使用e命令修改2000:0-2000:f的值,查看修改后结果

 

进行单步调试并且用d命令查看元素值的变化

 

 

 

 

 

 

 

 

-------------------------------------------------------------------------------

 

 

实验总结与注意点

  1. 实验1

8086的CPU不支持将数据直接送入段寄存器的操作,必须经过一个寄存器来中转。即将1000H送入一个一般的寄存器,然后将内容再送入ds。

 

常规的16位寄存器高8位存放高位字节,低8位存放低位字节。

 

栈是后进先出的结构。push ax将寄存器ax的数据送入栈中,sp的值减2;

pop ax将栈内元素给ax,然后sp的值加2。

 

 

  1. 实验2

mov ax,2000       即ax=2000

mov ss,ax         即ss=ax=2000

mov sp,10         即初始化sp的值为10

mov ax,3123       即ax=3123

push ax           即把3123送入栈

mov ax,3366       即ax=3366

push ax           即把ax=3366送入栈

 

 

 

初始时栈顶地址为2000:10;

第一次输入3123后栈顶地址为2000:8;

第二次输入3366后,栈顶地址为2000:6.

 

 

另外   MOV [SP],AX不是一条正确的汇编指令。作为存储器指针和的寄存器,80x86只有4个:[BX]、[BP]、[SI]、[DI]。

栈指针不能用。你是想说明将AX持有的值复制到包含在SP中的内存区域,但是不能这么用。

 

 

-------------------------------------------------------------------------------

 

疑问

 

 

 

 

 

在mov ax,3123后,push ax前,在2000:7的位置ax的值就已经被存入了,同理第二次mov ax,3366也是。

 

 

 

 

转载于:https://www.cnblogs.com/zyx20171346065/p/9839832.html

你可能感兴趣的文章
第二次冲刺
查看>>
使用JavaScriptSerializer序列化集合、字典、数组、DataTable为JSON字符串 ...
查看>>
20个Flutter实例视频教程-第12节: 流式布局 模拟添加照片效果
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第1节 继承_1_继承的概述
查看>>
用户场景分析
查看>>
hdoj1002
查看>>
数据结构,你还记得吗(中)
查看>>
C#规范整理·资源管理和序列化
查看>>
java IO笔记(InputStream/OutputSteram)
查看>>
Android_AsyncTask
查看>>
软件项目版本号的命名规则及格式
查看>>
排序算法
查看>>
屏幕滑动与滚动条事件进行绑定
查看>>
js清除浏览器缓存的几种方法
查看>>
hdu 3127(矩阵切割)
查看>>
hdu 1864(01背包)
查看>>
[stl] SGI STL的空间配置器
查看>>
【IIS】IIS中同时满足集成模式和经典模式
查看>>
使用DOM解析XML文档
查看>>
python函数参数传递总结
查看>>