语言:汇编 环境:DOS Box 系统:win 11
mov ax,0123H
mov bx,0003H
mov ax,bx
add ax,bx
1
shendaowu 335 天前 1
搜了一会只搜到这个比较好的 ppt: http://aturing.umcs.maine.edu/~meadow/courses/cos335/Asm07-MachineLanguage.pdf 。如果 OP 感觉不够好的话可以试试用“8086 Opcodes”再搜搜。中文的话可以试试“8086 机器码”。
我凭我模糊的理解大概解释一下吧。感觉 OP 迷惑的地方可能在都是 mov 所以机器码格式应该是一样的?如果是的话,其实这两种 mov 从 CPU 的角度来看应该属于两个小类,当然肯定属于 mov 这个大类。我甚至怀疑处理这两个小类的硬件都是不一样的,当然应该会有一些公用的部分。具体来说,机器码的前几位会确定后面的数据的“格式”。单一的 mov 汇编指令其实是对应着很多的机器码的前几位的。那个前几位应该叫操作码。所谓格式就是后面的数据被看成是什么,比如如果操作码是某个数的话,那么后面紧接着的几位数被看成是寄存器的编号还是内存地址。每个寄存器都有一个编号,由于 8086 的寄存器很少,所以用很少的位数就够了。 刚才问了一下 chatgpt 3.5 ,感觉我比它回答得好。自我感觉良好。 如果还有什么不懂的地方的话欢迎继续问。 |
2
shendaowu 335 天前 1
另外还有一点。我刚才在看这个的时候发现某些指令好像会被“压缩”: http://www.mlsite.net/8086/ 。不过很可能是我理解错了。这个如果你了解哈夫曼编码的话理解起来应该会更轻松一些。Intel 当年这么搞应该是为了节省内存。现在的定长指令好像不会玩这么花了。
|