计算机系统 汇编语言

基本概念

  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. 编译及进入调试
    编译后程序及进入调试过程

  3. 调试详解
    movl $0x08048056,%ebx: 直接寻址,把0x8048056存入%ebx
    movl $2,%ecx :直接寻址,把2存入%ecx
    movw (%ebx,%ecx,0x2),%ax: 把%ecx中的值乘2加上%ebx中的值的结果作为地址,读出其中对应的4个字节赋值给%ax
    0x8048056地址的存值
    %eax的存值

未完待续

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值