机器码与汇编指令的对应关系(兼议好问题怎么成了傻问题)

题记:本文记录与一位同学的对话。重点在后面。如果是在QQ群中的交流,可以知道对我们这个群体的益处。但问题就在于,有些同学有点害羞。对话中我发现我们的同学们不该有的负担,这是个问题。以我的教学实践,老师作为对内容熟悉的人,思考问题的角度,常会忽略初学者遇到的障碍,而问题一旦由同学问出,常会耳目一新:这是个好问题。然而,同学们,却如本文同学一样,觉得是个傻问题。若就这样闭上嘴巴,求知的大门也就变狗洞了。解决这个问题,将作为我在这个班上的教学目标。

【学生】老师啊~您现在忙吗?有点问题问一下……

【迂者】直接说

【学生】

B8代表的是 ax吗?

【迂者】
B82301完整的是一条3字节的指令
B8是操作码,内含了第一个操作数ax

【学生】那 mov 是由 哪个指令控制的?B吗?

【迂者】可以理解为B8对应的是mov ax

【迂者】这种对应关系并不是很机械的那种

【学生】这个和计算机组成原理有关么,

【学生】我翻出之前计算机组成原理实验的截图 ,,

【迂者】正是CPU内的连线,决定了指令的机器码

【学生】

【学生】
EA 就决定了 huo r2 , 对么

【迂者】

用我的这个截图,mov对应的机器码,有3种形式

【学生】那 mov cx 用什么指令机器码呢

【迂者】你进debug里做一下?这个会吗?

【学生】我以为有特定的码,有表格啥的。。。。。

【迂者】

表格应该有,我没找。但Debug在手,一切都有了

【学生】哦哦哦哦哦哦哦哦哦哦哦哦哦!明白了!

【学生】谢谢老师啊~~~

【迂者】学会我用的方法,你就可以自我解惑了。

【学生】好的。

【迂者】以后这类问题,能的话我们到群里聊,由你的提问受益的同学会特别多。这需要你没有思想负担。

【学生】老师~总觉得问你问题的时候~自己好傻啊

【迂者】你的问题相当好!一切疑问,都应该赞美。

【学生】在群里问 ……好……害羞……哈哈哈哈

【迂者】
  似乎我应该在全班和大家把这个话题聊一聊,认为自己的问题低级、不好意思。在大班环境中,我们需要同在群里的讨论,在大学中,真正要学好,靠的是同学之间的启发,要让老师一人对100人,黄花菜不是凉了,是烂了。

【学生】嗯嗯。

【迂者】帮你解决了一个疑问,我也找到了个周一课堂讲的话题。谢谢你!

【学生】嘿嘿

【迂者】
  我要带大家把这个认识误区打通,大家坦然地交流,学会欣赏自己提出的疑问,乐于把疑问分享出来,让大家都通了,我们的学习就无敌了。死要面子活受罪,这个面子要学会不要。

【学生】好!不要~

【迂者】
  周一我和同学们探讨这个话题后,我们都坦然地到群里研究。要求你一个人这样做,你不再问问题了,我就罪过了。

【学生】怎么会~~哈哈,

时间: 2024-11-18 05:34:08

机器码与汇编指令的对应关系(兼议好问题怎么成了傻问题)的相关文章

汇编指令与机器码的相互转换

机器语言我们只要重点理解一下几个概念: 1. 机器语言指令有操作码(OP)和地址码两部分组成 |_____________OP_______________|__d__|__w__| |_____________OP_______________|__s__|__w__| <--此格式用于立即寻址方式 在多数操作码中,常使用某些位来指示某些信息: 如图上结构里的: w=1 时 对字来操作 w=0 时 对字节来操作 d值在双操作数指令中才有效 当 d=1 时 有且只有一个寄存器用于目的操作数 d=

发两条modbus指令,如何区分返回的指令与发送指令的对应关系?

问题描述 发两条modbus指令,如何区分返回的指令与发送指令的对应关系? 主站向一个从站发两条指令,会收到两条返回数据,如何区分这两条返回数据分别对应了哪个指令 解决方案 modbus通讯一般都是问答式的发一条回一条出现发两条才再回两条的话程序有问题了

Android ARM常用的汇编指令合集

               ARM   处理器的指令集可以分为 跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.加载/存储指令.协处理器指令和异常产生指令  六大指令,这里把其它几个指令一起发了出来,可以查看具体的目录,请点击头部左上角 一.跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转.Ⅰ.使用专门的跳转指令: Ⅱ.直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前

汇编语言-关于汇编指令jmp的问题

问题描述 关于汇编指令jmp的问题 本人初学汇编语言,所用教材为汇编语言第3版(清华大学王爽著).发现win8.1没有debug功能,无奈只好去下了个DOSBox将就着用.学了-r -d -a -u -e指令都没问题,就是在jmp的这条指令下被卡住了.书上写的是jmp 段地址:偏移地址重新改写CS:IP或者jmp []只修改IP的值.可在我上机实践的时候发现上述两种用法被提示错误.如图: 不知是哪出了问题了,我已经用过几种搜索引擎均不见成效,朋友们求帮忙呗 小弟感激不尽!

Android 图解逆向工程中ARM常用汇编指令(一)

我们走得太快,灵魂都跟不上了. 微小的幸福就在身边,容易满足就是天堂. 在逆向和爆破中我们经常会在IDA中接触到汇编,一般做安卓的不会太了解VB回编等,不太了解的同学可以先查看上篇文章<Android ARM常用的汇编指令合集> 再来继续我们的学习,我们先来看张图. 这个view里面有 PUSH/LDR/SUB/MOVS/BLX/SUBS/BEQ/CMP ,这些差不多都是常见的,不过也不需要看得懂,理解这个指令即可,接下来我们就来分析下这些指令分别有什么作用吧. 先引入 概念性 东西,免得大家

汇编指令:cmp 、loop

问题描述 汇编指令:cmp .loop 为什么在cmp中使用了变量(header),就会导致loop出错! 解决方案 汇编中的test和cmp指令汇编中的test和cmp指令[转]汇编中的test和cmp指令 解决方案二:

机器码-nasm汇编全局字符串变量的声明问题

问题描述 nasm汇编全局字符串变量的声明问题 功能:提示MessageBox消息 1: bits 32 call func0 db 'user32.dll',0 func0: mov eax,7c801d7bH ;LOADLIBRARYA CALL eax push 0 call Func1 db "Infomation",0 Func1: call Func1_1 Func1_1: call Func2 db "This exe was Injected Code.&qu

汇编 指令 偏移地址-汇编语言,偏移地址IP移动次数与当前数值问题

问题描述 汇编语言,偏移地址IP移动次数与当前数值问题 今天遇见一道题,只有一点不明白,就是为什么最后IP等于0000H他跟AX的关系是什么? 下面的3条指令执行后,cpu几次修改IP?都是在什么时候?最后IP中的值是多少? mov ax,bx sub ax,ax jmp ax 答:一共修改四次 第一次:读取mov ax,bx之后 第二次:读取sub ax,ax之后 第三次:读取jmp ax之后 第四次:执行jmp ax修改IP 最后IP的值为0000H,因为最后ax中的值为0000H,所以IP

#大学#汇编指令查询

一.数据传输指令 它们在存贮器和寄存器.寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD 把