汇编中基本的机器指令和数据类型

admin 2024年8月5日10:40:37评论7 views字数 1385阅读4分37秒阅读模式
机器指令
  • mov 指令
    • 语法形式:
    • 类似于高级语言的以下形式:
    • mov 指令的注意事项:
      • x86_64 指令集不允许两个操作数都是内存变量。
      • mov 指令的两个操作数必须大小相同。

从技术上讲,mov 指令是将数据从一个地方拷贝到了另一个地方,而不是移动。该指令不会破坏源操作数(source_operand)中的原始数据。

  • add 指令和 sub 指令
    • 语法形式:
      • add|sub destination_operand source_operand
    • 类似于高级语言的以下形式:
      • destination_operand = destination_operand + source_operand
      • destination_operand = destination_operand - source_operand

常量操作数的最大值限制为 32 位。

  • lea 指令
    • 语法形式:
      • lea reg, memory_var
    • 类似于高级语言的取地址符"&"

有时需要将变量的地址加载到寄存器中,而不是加载该变量的值,便可使用该指令。

  • call 指令ret 指令

为了进行函数调用,需要使用 call 指令和 ret 指令。

  • ret 指令允许使用单个操作数,操作数不指定函数返回值,语法形式:

    • ret

  • call 指令可以调用 MASM 过程。该指令可采用两种形式,常用语法形式如下:

    • call proc_name

  • MASM 过程
    • MASM 过程包含以下代码行:

      • proc_name proc

    • 然后是过程主体(通常以 ret 结束)。在过程结束时(通常紧随 ret 指令后)使用以下语句结束过程:

      • proc_name endp

MASM 数据类型

类型
大小(字节)
说明
byte(db)
1 无符号整数
sbyte 1 有符号整数
word(dw) 2 无符号整数
sword 2 4有符号整数
dword(dd) 4 无符号整数
sdword 4 有符号整数
qword(dq) 8 无符号整数
sqword 8 有符号整数
tbyte 10 无符号整数或BCD
oword 16 符号整数
real4 4 单精度浮点数
real8 8 精度浮点数
real10 10 扩展精度浮点数
proc N/A 过程标签
label: N/A 语句标签
constant 可变 变量声明
text N/A 文本替换
示例代码
; 注释使用分号(;)表示
; option 语句指示 MASM 区分所有符号的大小写option casemap:none
; 定义数据段.data
; 问号(?)表示对象没有显示值(默认初始化为 0)i8 db ?u16 sword ?i32 dd ?u64 sqword ?rl8 real8 ?; 字符串后面包含 0,表示字符串的结束。ASCII 码的 10 表示换行符fmtstr db 'string', 10, 0
;定义代码段.code
; proc 伪指令是用来定义子程序或过程的开始的伪指令; 它通常与 endproc 或 enpd 伪指令一起使用来表示一个过程的开始和结束main proc    mov al, i8    mov bx, u16    mov r8d, i32    mov r9, u64    mov r10, rl8    lea eax, fmtstr    add bx, 6    sub bx, 5main endp; end 伪指令标记源代码文件的结束end

执行前:

汇编中基本的机器指令和数据类型

执行后

汇编中基本的机器指令和数据类型

原文始发于微信公众号(走在网安路上的哥布林):汇编中基本的机器指令和数据类型

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月5日10:40:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   汇编中基本的机器指令和数据类型https://cn-sec.com/archives/2981956.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息