汇编指令的一般性要求: 1、两个操作数的尺寸必须一致; 2、操作数不能同为内存.
---------------------------------------------------------------------------------------------------------------

;mov

;该指令不影响 EFlags
;指令格式: (其中的 r、m、i 分别表示: 寄存器、内存、立即数)
mov r/m, r/m/i

mov val, 123
    mov  edx
, val
    mov  eax, edx

    PrintDec edx      ;123

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

Lea

;该指令不影响 EFlags
;指令格式:
LEA r, m

.data
    szText db 'ABCDEFG', 0
.code
main proc
    lea eax
, offset szText
    lea ebx, szText
    PrintHex eax ;00403000
    PrintHex ebx ;00403000
    ret
main endp
end
main

让我感到比较困惑的是   lea 的那条居然会输出地址  - -

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

XCHG(Exchange): 交换指令

数据交换指令 XCHG

格式: XCHG OPRD1,OPRD2 其中的OPRD1为目的操作数,OPRD2为源操作数

功能: 将两个操作数相互交换位置,该指令把源操作数OPRD2与目的操数OPRD1交换.

说明: 1. OPRD1及OPRD2可为通用寄存器或存储器,但是两个存储器之间是不能用XCHG指令  ----     实现的.

2. 段寄存器内容不能用XCHG指令来交换.

示例: XCHG AX,BX
                XCHG SI,AX
                XCHG CL,CH
                XCHG DX,BUFFER
                XCHG CH,DATA2[SI]
                SCHG WORDA,CX
 
       3. 若要实现两个存储器操作数DATA1及DATA2的交换,可用以下指令实现:
          示例: PUSH DATA1
                  PUSH DATA2
                  POP DATA1
                  POP DATA2

注意: 此处通过中间寄存器,也很容易实现两个存储器操作数的交换.

4. 本指令不影响状态标志位.

XCHG r/m, r/m

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

XLATB(Translate Byte)、XLAT(Translate): 换码指令

查表指令 XLAT/XLATB
 
 格式: XLAT TABLE 其中TABLE为一待查表格的首地址.
 ----  XLATB TABLE 其中TABLE为一待查表格的首地址.    
 功能: 把待查表格的一个字节内容送到AL累加器中.在执行该指令前,应将 TABLE先送至BX  ----  寄存器中,然后将待查节节与在表格中距表首地址位移量送AL,即 (AL)<--((BX)+(AL)).

;XLATB 可简化为 XLAT
;该指令不影响 EFlags
;XLAT 无参数, 操作和 EBX、AL 相关
;执行 XLAT 前, 先把源地址放入 EBX, 把字节序号放入 AL
;执行后, 指定字节被读入 AL

.data
    szText db 'ABCDEFG', 0
.code
main proc
    lea ebx
, szText

mov al, 1
    xlat

PrintHex al ;42 - 这是 'B' 的 ASSII 编码
   
    mov al
, 2
    xlatb

    PrintHex al ;43 - 这是 'C' 的 ASSII 编码
    ret
main endp
end
main

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

MOVSX 指令

格式: MOVSX OPD,OPS

功能: 将8位或16位的OPS符号扩展为16位或32位, 再传给OPD.所谓的符号扩展, 就是当    ----  把一个字节扩展为字或是一字扩展为双字时,高位字节的各位和原数最高位相同,这        可以保证原来用补码表示的数值不变.这条指令一般用于带符号数的扩展.

如果源操作数的最高位是 1, MOVSX 会将目标寄存器中高出的位补 1; 反之补 0

说明: 指令举例

1. MOVSX EAX ,BX    
2. MOVSX ECX,CL    
3. MOVSX DX,DL

.data
    bVal   db 90h
    dwVal1 dw 7FFFh
    dwVal2 dw 8000h
.code
main proc
    movzx eax, dwVal1
    movsx edx, dwVal1
    PrintHex eax ;00007FFF
    PrintHex edx ;00007FFF
   
    movzx eax, dwVal2
    movsx edx, dwVal2
    PrintHex eax ;00008000
    PrintHex edx ;FFFF8000
   
    mov cl, bVal
    movzx ax, cl
    movsx dx, cl
    PrintHex ax  ;0090
    PrintHex dx  ;FF90
    ret
main endp
end main
-------------------------------------------------------------------------------------------------------------------------------

Win32ASM学习[10]:传送指令相关推荐

  1. Win32ASM学习[16] :乘除指令: MUL、IMUL、DIV、IDIV

    ---------------------------------------------------------------------------------------------------- ...

  2. movs 数据传送指令_PLC中简单好用的传送指令功能,你学会了吗?

    戳上方蓝字 "技成电工课堂" 关注我们哦! PLC的各种功能指令中,传送指令的使用非常频繁,且相对简单.一说到简单,我猜已经有很多人蠢蠢欲动,迫不及待地想征服这个传送指令了.那么, ...

  3. 三菱PLC批量传送指令BMOV

    三菱PLC学习-成批传送指令BMOV 指令格式 BMOV S DN 操作数 内容取值 S 进行传送的数据或其存储字软元件首址 D 传送数据目标的字软软件首址 N 传送的字元件的点数 ,N<=51 ...

  4. 计算机组成原理学习笔记————计算机指令,MIPS指令集,存储器操作数,数据传送指令,取数存数指令

    计算机语言 现在计算机编程常用的语言是C,C++,Java等高级语言,但计算机第层是将高级编程语言的代码编译成二进制代码形式的指令才能执行.所以计算机语言中的基本单词是二进制形式的指令,一台计算机的全 ...

  5. 西门子PLC学习笔记十一-(装入与传送指令)

    S7-300/400指令有:装入与传送指令.比较指令.算术运算指令.字逻辑运算指令.移位指令.逻辑控制指令.程序控制指令.主控指令等. 1.装入与传送指令(不能用于梯形图编程) 装入传送指令实现了各种 ...

  6. 微机原理学习笔记——寻址方式和传送指令(MOV)

    目录 操作数的寻址方式 立即数寻址方式 寄存器寻址方式 存储器寻址方式 段超越前缀指令 直接寻址方式 寄存器间接寻址方式 寄存器相对寻址方式 基址变址寻址方式 相对基址变址寻址方式 存储器寻址方式中的 ...

  7. 【汇编语言与计算机系统结构笔记05】汇编的系统结构,从C代码生产汇编代码,一个具体的、经典的数据传送指令(mov)实例与分析

    本次笔记内容: 06.寻址模式与数据传输指令等 文章目录 汇编程序员眼中的系统结构 如何从C代码生产汇编代码 如何装gcc? 汇编语言数据格式 第一条汇编指令实例 数据传送指令(mov) 语法与操作数 ...

  8. 数据类型与数据传送指令

    数据类型与数据传送指令 数据类型.数据传送指令.间接寻址 一.数据类型 数据类型的基本特征是以数据为的数目度量的大小,其他特征主要是为了方便程序员记忆变量中存储的数据类型,默认情况下大小写不敏感. 类 ...

  9. 汇编语言随笔(5)-and、or指令,串传送指令movsb、访问内存单元的方式及实验4,5(向内存传送数据)

    and.or指令 and指令,逻辑与指令,按位进行与运算:or指令,逻辑或指令,按位进行或运算.       如:mov al,01100011B               and al,00111 ...

最新文章

  1. 仅用几行Python代码就能帮小姐姐复制U盘文件,实用干货
  2. 复盘AI领域收购十年:635起收购案,苹果位居榜首
  3. 电商项目商品搜索模块 - ESik分词器安装
  4. 使用code::blocks搭建objective-c的IDE开发环境 支持 @interface
  5. 实现删除商品信息功能
  6. Google Reader 干掉了 RSS!
  7. 多线程解决同步问题浅析
  8. 中学计算机课程课时,初中信息技术基础教案设计(课时).doc
  9. 随机过程之马尔科夫链
  10. 使用宏将xlsx格式文件批量转为xls格式文件
  11. Python GUI教程:信号、槽、事件
  12. EXCEL中小数点后面的0怎么去掉
  13. 数据结构 三:树(Tree)
  14. oracle asm 缺省用户,oracle asm自动存储使用及管理说明(下)
  15. 使用Fiddler抓取微信小程序二维码请求地址
  16. python获取邮件并转为pdf
  17. Linux中CentOS 7如何联网?
  18. 一图读懂国家标准GB/T 42012-2022《信息安全技术 即时通信服务数据安全要求》
  19. ffplay用法大全
  20. 一小时学会js正则表达式

热门文章

  1. c语言编程计算人口增长模式转变示意图,读“人口增长模式及其转变示意图”,回答下列问题。(5分)(1)图中字母代表的人口增长模式是:A____________、B____...
  2. java dto entity,entity与DTO完全一致时
  3. 请领导批阅文件怎么说_刚到公司,应该怎么喊领导,别直接说名字,高情商这样称呼...
  4. 安装linux无驱动黑屏,ubuntu16.04安装黑屏与显卡安装笔记
  5. mysql sqlserver schema_MySQL数据库数据迁移到SQLserver
  6. mysql数据库相互备份_MySQL的本地备份和双机相互备份脚本
  7. NativeScript - JS 构建跨平台的原生 APP
  8. 2019.7.16考试总结
  9. js笔记(二)数组、对象、this
  10. Easy.Ajax 部分源代码, 支持文件上传功能, 兼容所有主流浏览器