一般来说 汇编指令分为纯汇编指令和伪汇编指令, 一般来说
纯汇编指令和机器指令是一一对应的,也就是编译器看见纯汇编指令会直接转成机器指令。
常见的纯汇编指令
mov ax 立即数
mov ax 寄存器
mov ax 内存地址
如果是编译器碰见伪汇编指令 就会把伪汇编指令 先转换成 纯汇编指令 再到机器指令
比如 mov ax (100+300)D 就是个伪汇编指令
编译器在看到这条指令的时候
1 有可能优化此指令变成纯汇编指令
mov ax(100+300)D ------> mov ax 400D
2 有可能分解此指令
mov ax 100D
add ax 300D 变成纯汇编指令
一般来说 随着编译器的升级 现在的伪汇编指令可能将来会变成纯汇编指令
C语言---->混合汇编---->纯汇编 ---->机器指令
一般来说 你给我一个汇编指令(包含纯 伪) 给个编译器就能轻轻松松变成机器指令
但是
反过来想
我要是给你一个纯汇编指令 mov ax 300D 你能知道它的伪指令吗
1 有可能是mov (100+200)D
2 有可能是mov (150+150)D
当然不一定是伪指令变成 mov ax 300D
还有可能是多种纯指令的结合
mov ax 100D
add ax 200
所以正向的时候简单 反向的时候难 特别是C语言到混合汇编再到纯汇编的时候 已经丢失了一些信息 再从编译器做过手脚后的 纯汇编 回过去 就非常难了