博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汇编语言简介(二)
阅读量:6479 次
发布时间:2019-06-23

本文共 945 字,大约阅读时间需要 3 分钟。

hot3.png

一、范例程序:cpuid.s

.section .dataoutput:  .ascii "The processor Vendor ID is 'xxxxxxxxxxxx'\n".section .text.globl _start_start:  movl $0, %eax  cpuidmovl $output, %edimovl %ebx, 28(%edi)movl %edx, 32(%edi)movl %ecx, 36(%edi)movl $4, %eaxmovl $1, %ebxmovl $output, %ecxmovl $42, %edxint $0x80movl $1, %eaxmovl $0, %ebxint $0x80

这个程序查看CPUID指令产生的厂商ID字符串。

1、使用GNU汇编器和GNU连接器构建可执行程序

运行情况:

2、使用GNU通用编译器编译

  gcc有默认的_start标签,查找的是main标签,所以代码要进行以下修改:

.globl mainmain:  movl $0, %eax  cpuid

运行情况:

二、调试程序

   使用GDB

   两种最常被检查的数据元素是用于变量的寄存器和内存位置。如下:

三、在汇编语言中使用C库函数

代码如下:cpuid2.s

.section .dataoutput:  .asciz "The processor Vendor ID is '%s'\n".section .bss  .lcomm buffer, 12.section .text.globl _start_start:  movl $0, %eax  cpuid  movl $buffer, %edi  movl %ebx, (%edi)  movl %edx, 4(%edi)  movl %ecx, 8(%edi)  pushl $buffer  pushl $output  call printf  addl $8, %esp  pushl $0  call exit

用连接器生成: 

用gcc,只需把_start标签变为main。

 

转载于:https://my.oschina.net/u/2537915/blog/690695

你可能感兴趣的文章
常用HiveQL总结
查看>>
[转]使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger
查看>>
POJ 3311 Hie with the Pie(状压DP + Floyd)
查看>>
Security updates and resources
查看>>
DNS为什么通常都会设置为14.114.114.114
查看>>
Sqoop架构(四)
查看>>
golang copy函数
查看>>
《你有多少问题要请示》精华集粹
查看>>
打印图片
查看>>
SHOW CREATE DATABASE Syntax
查看>>
rsync常见问题及解决办法
查看>>
MySQL日期 专题
查看>>
C#中禁止程序多开
查看>>
分布式缓存Redis使用以及原理
查看>>
Activity竟然有两个onCreate方法,可别用错了
查看>>
Linux经常使用命令(十六) - whereis
查看>>
Linux五种IO模型
查看>>
Bootstrap技术: 模式对话框的使用
查看>>
小知识,用myeclipes找jar
查看>>
in-list expansion
查看>>