微机原理及应用实验——MOV指令的使用详解
MOV指令的使用及多字节加减法程序
- 前言
- 初识MOV指令
- 指令格式
- 指令功能
- MOV指令可实现以下各种传送
- 使用TD进行调试
- 1.MOV BL,08H
- 2.MOV CL,BL
- 3.MOV AX,03FFH
- 4.MOV BX,AX
- 5.MOV [0200H],BX
- 6.MOV ES:[0300H],AX
前言
本文用到的汇编调试程序为TD.exe,简称TD
具体使用方法请参照:
- 微机原理及应用实验——汇编环境MASM的使用
初识MOV指令
通用数据传送指令包括一般传送指令MOV、堆栈操作指令PUSH和POP、交换指令XCHG、查表转换指令XLAT和字位拓展指令。
通用数据传送指令的执行对标志位不产生影响。
指令格式
MOV dest,src
- 两操作数字长必须相同;
- 两操作数不允许同时为存储器操作数;
- 两操作数不允许同时为段寄存器;
- 在源操作数是立即数时,目标操作数不能是段寄存器;
指令功能
这里的dest表示目标操作数,src表示源操作数。
指令的功能是将一个操作数从源地址传送到目标地址,而源地址中的数据保持不变。
也就是说,MOV指令实际上是完成了一次数据的复制。
MOV指令可实现以下各种传送
注:
- reg:寄存器
- mem:存储器
- sreg :段寄存器
- data :8或16立即数
使用TD进行调试
启动TD(Turbo Debugger)输入程序段,观察执行情况并分析结果:
MOV BL,08H
MOV CL,BL
MOV AX,03FFH
MOV BX,AX
MOV [0200H],BX
MOV ES:[0300H],AX
首先将上面的命令敲到TD程序里:
与我们平常使用的编辑器不太一样:
- 光标(一长条的横杠)在哪里,就在哪里输入指令,直接输入即可
- 运行指令要看指针位置
可以看到,当前的指针ip,其值为0100,这里的0100指的是cs的偏移地址,可以看到,对应着的就是第一行指令
下面我们一步一步地运行上面这6条指令,按F8运行单条指令(运行python程序是F5,我经常会按错。。。)
1.MOV BL,08H
执行这一条语句后,可以看到:
首先,bx的值变了,bh是bx的高8位,bl是bx的低8位
MOV BL,08H
这条指令的意思是将08H这个值赋给bl,即执行该指令后,bx应该变成0008h,结果与上图一致
另外,执行完一条指令后,ip会自动指向下一条指令,该指令的偏移地址为0102h
再来看下一条指令
2.MOV CL,BL
执行该指令后:
MOV CL,BL
该指令的意思是把bl的值赋给cl,由上图可知,cx的低8位和bx的8位是一样的,结果一致
于此同时,ip也指向了下一条指令
3.MOV AX,03FFH
该指令执行后:
MOV AX,03FFH
该指令的意思是把03ffh这个十六进制的值赋给ax,结果与上图一致,ax的值变成了03ff
4.MOV BX,AX
执行该指令后:
MOV BX,AX
该指令的意思是把AX的值赋给BX,如图所示,现在AX,BX的值都是03ff
5.MOV [0200H],BX
MOV [0200H],BX
这条指令的意思是把bx的值赋值到ds:[0200H]这个地址里(基地址默认为ds),先来看看这个地址里原来的值是多少:
可以看到,现在ds:[0200H]里全0,当我们运行这条指令后:
看,03ff这个值就被存到ds:[0200H]里了
如果这样看的不舒服,可以用将byte改成word类型来显示:
6.MOV ES:[0300H],AX
MOV ES:[0300H],AX
这条指令的意思是把AX里的数据送入ES:[0300H]这个地址里
跟上一条指令做一下对比:
MOV [0200H],BX
没有指定基地址时,基地址默认为ds;这里指定了基地址为es,所以我们要去es段找0300h这个偏移地址:
这里可以看到,ds和es的基地址都是一样的,说明他们公用了一个基地址
我们找到0300这个偏移地址,它里面的初始数据也是全0
下面执行一下MOV ES:[0300H],AX这个指令:
可以看到,0300h这个偏移地址里的值也变成ax的值了
微机原理及应用实验——MOV指令的使用详解相关推荐
- 微机原理-虚拟仿真实验-DAC0832数模电路汇编代码
微机原理-虚拟仿真实验-DAC0832数模电路汇编代码 ;-------------------------------------- DATA SEGMENTMESS1 DB 'sawtooth Q ...
- 观看实验中微型计算机虚拟拆装演示,虚拟仿真实验 北斗一号微机原理虚拟仿真实验系统64位 v3.0...
下面我们对虚拟仿真实验 北斗一号微机原理虚拟仿真实验系统64位 v3.0文件阐述相关使用资料和虚拟仿真实验 北斗一号微机原理虚拟仿真实验系统64位 v3.0文件的更新信息. 虚拟仿真实验 北斗一号微机 ...
- 实验6 8255并行接口实验【微机原理】【实验】
实验6 8255并行接口实验[微机原理][实验] 前言 推荐 3.2 8255并行接口实验 3.2.1实验目的 3.2.2实验内容 3.2.3实验原理 3.2.4 实验说明及步骤 3.2.5实验提示 ...
- 微型计算机原理与应用实验指导书,微机原理与应用实验指导书-20180316.doc
微机原理与应用实验指导书-20180316 PAGE PAGE 1微型计算机原理与应用实 验 指 导 书控制科学与工程学院实验中心山东大学二零一八年三月目 录汇编语言开发环境实验实验1-1 汇编语言程 ...
- 微型计算机测控系统课程设计报告,微机原理课程设计实验报告--步进电机控制.docx...
文档介绍: 2010-2011学年第一学期 微机原理课程设计实验报告 课题名:步进电机控制 一.课题内容和提示: 编程提示: (1)步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机做步进式旋 ...
- 计算机汇编指令mov和mova,汇编语言中mov和lea指令的区别详解
指令(instruction)是一种语句,它在程序汇编编译时变得可执行.汇编器将指令翻译为机器语言字节,并且在运行时由 CPU 加载和执行. 一条指令有四个组成部分: 标号(可选) 指令助记符(必需) ...
- call指令和ret指令【笔记+详解】
笔记目录 call指令和ret指令[笔记] 1 引子 2 call和ret的简单运用 3 call指令本质含义详解 4 ret指令 5 总结及汇编环境资源 call指令和ret指令[笔记] 1 引子 ...
- swi 指令能用在C语言吗,SWI指令---软件中断实例详解
SWI指令---软件中断实例详解 转载于:http://blog.csdn.net/panqihe/article/details/1615574 SWI,即software interrupt软件中 ...
- SWI指令---软件中断实例详解(原创)
SWI指令---软件中断实例详解 关键字: SWI,指令,软件中断,实例,详解 SWI,即software interrupt软件中断.该指令产生 ...
最新文章
- java音频库_Java是否为音频_synthesis_内置了库?
- 栈(stack)和堆(heap)
- async/await 异步操作 .net csharp C#
- $.ajax所犯的错误。success后面不执行
- python3实用编程技巧_6.python3实用编程技巧进阶(一)
- 剖析供应链攻击的防范
- 联想拯救者Y90游戏性能实测:全程满帧 散热能力出众
- hdu 2063 过山车(模板)
- 小米mix2s html,【小米MIX2s评测】2018需要加价买的旗舰 小米MIX 2S评测_小米 MIX 2s(6GB RAM/全网通)_手机评测-中关村在线...
- Cache 和 Buffer 有什么区别?
- 大数据分析的作用与注意事项
- AutoCAD2022 安装说明
- 360安全卫士隐藏广告日常去除小技巧
- 解决被西刺代理封ip的问题
- 谷歌flutter_在Flutter中使用Google Pay Through Stripe接受付款
- Wind7外接显示器选择拓展模式后,鼠标只能往右移动才能切换到外接显示器上,不能修改切换方向...
- 【前端框架】Element UI Dialog 组件中执行 DOM 操作异常问题的分析与处理
- ChatGPT 帮你写情人节文案
- 关于京东商城在宜宾开通货到付款的随想
- python数组中查找某个值,Python实现在某个数组中查找一个值的算法示例
热门文章
- python二进制转为十进制-Python实现的十进制小数与二进制小数相互转换功能
- 两个List集合取交集、并集、差集、去重并集
- NNDL 实验七 循环神经网络(4)基于双向LSTM的文本分类
- 电脑端bp抓手机数据包
- 解读NVIDIA显卡
- 【JAVA企业级开发】浅谈关于在WEB大前端已然降临的时代中,你是否还是在学习jsp、freemarker、velocity、themleaf等模板引擎么?
- 传奇所有地图参数的意思
- Three.js MeshStandardMaterial菲涅尔实现
- ECS_搭建个人Leanote云笔记本
- 常见的20个品牌键盘按键错乱恢复的快捷键