Description

前面我们用到了mov, add. sub指令,它们都带有两个操作对象。到现在,我们知道,mov指令可以有以下几种形式。

mov  寄存器,数据       比如:  mov ax,8
mov 寄存器,寄存器 比如: mov ax,bx
mov 寄存器,内存单元 比如: mov ax,[0]
mov 内存单元,寄存器 比如: mov [0],ax
mov 段寄存器,寄存器 比如: mov ds,ax

我们可以根据这些己知指令进行下面的推测。

  1. 既然有 “mov段寄存器,寄存器”,从寄存器向段寄存器传送数据,

    那么也应该有 “mov寄存器,段寄存器” ,从段寄存器向寄存器传送数据。

    一个合理的设想是:8086CPU内部有寄存器到段寄存器的通路,那么也应该有相反的通路。

    有了推测,我们还要验证一下。进入Debug,用 \(-A\)​​​​ 命令,如下图3.4所示。

图中,用A命令在一个预设的地 \(0B39:0100\)​处,用汇编的形式 mov ax,ds 写入指令,再用T命令执行,可以看到执行的结果,段寄存器 ds 中的值送到了寄存器 ax 中。

通过验证我们知道,“mov寄存器,段寄存器”是正确的指令。

  1. 既然有 “mov内存单元,寄存器”,从寄存器向内存单元传送数据,

    那么也应该有“mov内存单元,段寄存器”,从段寄存器向内存单元传送数据。比如我们可以将段寄存器 \(cs\) 中的内容送入内存 \(10000H\) 处,指令如下。

mov  ax,1000H
mov ds,ax
mov [0],cs

在Debug中进行试验,如图3.5所示。

图3.5中,当 \(CS:IP\) 指向 \(0B39:0105\) 的时候,Debug显示当前的指令mov [0000],cs因为这是一条访问内存的指令,Debug还显示出指令要访问的内存单元中的内容。

由于指令中的 \(CS\) 是一个 \(16\) 位寄存器,所以要访问(写入)的内存单元是一个字单元,它的偏移地址为 \(0\) ,段地址在 ds 中,Debug在屏幕右边显示出“\(DS:0000=0000\)",我们可以知道这个字单元中的内容为 \(0\)

mov [0000],cs执行后,CS中的数据(\(0B39H\) )被写入 \(1000:0\) 处,\(1000:1\) 单元存放 \(0BH, 1000:0\)​ 单元存放 \(39H\)

最后,用D命令从 \(1000:0\) 开始查看指令执行后内存中的情况,注意\(1000:0, 1000:1\)两个单元的内容。

  1. "mov段寄存器,内存单元”也应该可行,比如我们可以用1 0000H处存放的字型数据设置ds(即将1 0000H处存放的字型数据送入ds),指令如下。
mov ax,1000H
mov ds,ax
mov ds,[0]

可以自行在Debug中进行试验。

add和sub指令同mov一样,都有两个操作对象。它们也可以有以下几种形式。

它们可以对段寄存器进行操作吗?比如“add ds,ax"。请自行在Debug中试验。

汇编 | mov. add. sub指令的更多相关文章

  1. 汇编-MOV指令

    知识点:  MOV指令  基址  内联汇编  把OD附加到资源管理器右键菜单 一.MOV指令 aaa=0x889977;//MOV DWORD PTR DS:[0x403018],0x8899 ...

  2. (32位汇编 五)mov/add/sub/and/or/xor/not

    本文链接:https://blog.csdn.net/pl20140910/article/details/78227133说明符号 说明r 通用寄存器m 代表内存imm 代表立即数r8 代表8位通用 ...

  3. 汇编 STD和CLD指令

    一.用纯汇编封装函数strcmpW 1.用repnz scasw计算字串长度 2.用repz cmpsw比较字串内容 3.把比较的结果存放在EAX里边返回 __declspec(naked) int ...

  4. 汇编 MOV -2

    知识点:  MOV指令  基址  内联汇编  把OD附加到资源管理器右键菜单 一.MOV指令 aaa=0x889977;//MOV DWORD PTR DS:[0x403018],0x8899 ...

  5. 学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

    http://www.cnblogs.com/del/archive/2010/04/16/1713886.html 跳转指令分三类:一.无条件跳转: JMP;二.根据 CX.ECX 寄存器的值跳转: ...

  6. Ubuntu x86-64汇编(3) 数值操作指令

    指令标注 Operand Notation 指令instruction即运算operation, 操作的对象为一个或多个运算数operand, 使用不同的标记表示不同的约束 <reg>  ...

  7. ARM 汇编指 跳转指令 b , bl

    1. 跳转指令 [ b ] [ bl ]   指令格式:<opcode><cond> <address> 不带返回的跳转指令:b mov r0, #0x12 mov ...

  8. 【汇编】字符串处理指令 stosb、lodsb、movsw、scasb、rep

    一.字符串处理指令 (1) lodsb.lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据DF标志增减SI (2) stosb.stosw:把AL或AX中的数据装入ES:DI指向的 ...

  9. Debug和汇编编译器masm对指令的不同处理

    我们在Debug和源程序中写入同样形式的指令 : "mov al,[0]","mov bl,[1]","mov cl,[2]"," ...

  10. 汇编 (NOT)按位取反指令

    知识点:  (NOT)按位取反指令  逻辑取反(!)  按位取反(~)  SETZ(SETE) 取ZF位值保存  SETNZ(SETNE)将ZF位值取反后保存 一.逻辑取反(!) !111 ...

随机推荐

  1. In 查询及其优化

      translator Afrikaans Albanian - shqipe Arabic - ‎‫العربية‬‎ Armenian - Հայերէն Azerbaijani - azərb ...

  2. 自定义springboot-starter 动态数据源

    自定义springboot-starter 动态数据源 如果使用的是spring或springboot框架,spring提供了一个实现动态数据源的一个抽象类AbstractRoutingDataSou ...

  3. Apache Paimon流式湖仓学习交流群成立

    Apache Paimon是一个流式数据湖平台.致力于构建一个实时.高效的流式数据湖平台.这个项目采用了先进的流式计算技术,使企业能够实时处理和分析大量数据.Apache Paimon 的核心优势在于 ...

  4. .NET8 依赖注入

    依赖注入(Dependency Injection,简称DI)是一种设计模式,用于解耦组件(服务)之间的依赖关系.它通过将依赖关系的创建和管理交给外部容器来实现,而不是在组件(服务)内部直接创建依赖对 ...

  5. 创建一个循环写入数据有事务提交的oracle函数示例

    /*创建函数*/create or replace function fnc_testtempInfo(startDate IN varchar2, endDate in varchar2) retu ...

  6. 基于yolo的口罩识别(开源代码和数据集)

    2020年开头真的很人意外,开年爆发了疫情.此次疫情牵动了各行各业,在这里衷心的感谢奋斗在一线的医疗工作者:您们辛苦了.作为一名非医专业的学生,在这样情况下,除了不乱跑以外,我也想以另一种方式去致敬那 ...

  7. Educational Codeforces Round 26 Problem A

    A. Text Volume time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  8. StringBuilder、StringBuffer

    StringBuilder 1.concat() 拼接字符串 2.indexOf() 查找 3.replace() 替换 4.subString(1,2) 截取 0,1,2 1开始 2结束 Strin ...

  9. ASR项目实战-任务队列在文件转写特性中的应用

    转写时长超出60秒的语音文件,业界的竞品通常会使用创建异步转写任务的方式来提供支持. 一个简单.直接的实现方案,即: 网关服务接收到来自客户的转写请求时,将任务信息持久化至任务队列中. 由算法服务的实 ...

  10. CTFHub XSS DOM反射 WriteUp

    前言:本文需要注册一个xss平台,以接收xss反弹回来的数据,请自己在互联网上寻找合适的xss平台 1. 构造闭合语句 根据题目提示,判断网站存在DOM xss漏洞 查看页面源代码,发现关键位置,其中 ...