计算机系统 汇编语言

汇编语言入门

    • 基本概念
    • 常用指令
    • 程序举例
    • 未完待续

基本概念

  1. 机器指令和汇编指令
    机器指令:可读性低,一般由二进制01表示
    汇编指令:选用一些反应机器指令的功能单词或词组代表机器指令,把CPU内部资源符号化,引用符号=引用具体物理资源。
  2. 汇编语言格式
    指令 源操作数 目的操作数 eg:movl $8, %eax

常用指令

  1. 编译指令
指令 功能
gedit 1006.s 编辑.s文件
as -g 1006.s -o 1006.o 将.s文件转化为.o文件
ld 1006.o -o 1006 将.o文件转化为可执行文件
objdump -d 1006 查看目标文件
  1. 调试指令
指令 功能
b *_start+1 进入调试
as -g 1006.s -o 1006.o 设置断点
r(run) 运行
n(next) 下一步
x/4bt 0x12345678 (b单字节、h双字节、w四字节) 打印地址中的值
p value1 打印值
p &value1 打印储存的地址

:上述指令在每个程序编译调试的时候都重复使用,没有什么具体可讲的,只需要记忆熟练,所以先总结在上面。对于具体程序的编译调试,会侧重分析程序中的数据具体流向和操作指令的功能作用。

程序举例

eg:比例变址寻址

  1. 程序代码

    .section .text   
       
    .global _start   
     _start:      
         	nop
         	movl $0x08048056,%ebx
    	movl $2,%ecx
    	movl $0x0402402b,%ecx
    	movw (,%ecx,0x2),%ax
    
     	movl $1, %eax  
     	movl $0, %ebx  
     	int $0x80  
    
  2. 编译及进入调试
    计算机系统 汇编语言_第1张图片

  3. 调试详解
    movl $0x08048056,%ebx: 直接寻址,把0x8048056存入%ebx
    movl $2,%ecx :直接寻址,把2存入%ecx
    movw (%ebx,%ecx,0x2),%ax: 把%ecx中的值乘2加上%ebx中的值的结果作为地址,读出其中对应的4个字节赋值给%ax
    0x8048056地址的存值
    计算机系统 汇编语言_第2张图片

未完待续

你可能感兴趣的:(计算机系统)