汇编语言指令与操作数详解
程序异常与处理
在编程过程中,若未正确结束程序,点击“Continue”按钮,Linux 系统会抛出段错误(segmentation fault)。这通常是因为程序试图执行超出文本段末尾的指令,不过 Linux 系统能很好地处理这类异常程序,一般不会对系统本身造成损害。若要避免产生段错误,可在主菜单中选择“Run → Kill”,该命令会停止正在调试的程序,即便程序在断点处暂停或单步执行时也能生效。
指令与操作数概述
在汇编语言编程里,最常见的操作就是数据的移动。其中,MOV 指令是实现数据移动的通用方式,它能在寄存器间、寄存器与内存间移动字节、字(16 位)或双字(32 位)数据,但不能直接在内存地址间移动数据,若要实现需两条 MOV 指令。
MOV 指令名有一定误导性,实际是将数据从源复制到目标,源数据不会消失,这与我们通常理解的“移动”概念不同。
源操作数与目标操作数
多数机器指令(包括 MOV)有一个或多个操作数。以“mov eax,1”为例,第一个操作数 EAX 是目标操作数,第二个操作数 1 是源操作数。在 MOV 指令中,源操作数会被复制到目标操作数。一般规则是,当指令生成新值时,新值会存于目标操作数。
操作数有三种数据类型:内存数据、寄存器数据和立即数。以下是 MOV 指令操作数的示例表格:
| 机器指令 | 目标操作数 | 源操作数 | 操作数说明 |
| ---- | ---- | ---- | ---- |
| MOV EAX, 42h | EAX | 42h | 源是立即数 |
| MOV EBX, ED
超级会员免费看
订阅专栏 解锁全文
614

被折叠的 条评论
为什么被折叠?



