例如这个名为int $0x80 linux系统。
SUA是否实现了类似的功能?如果是,命令是什么?
#cpuid.s Sample program to extract the processor Vendor ID
.section .data
output:
.ascii "The processor Vendor ID is 'xxxxxxxxxxxxx'\n"
.section .text
.globl _start
_start:
movl $0, %eax
cpuid
movl $output, %edi
m
我希望在不使用linux内核(或system?)的情况下,将以下汇编代码更改为UNIX兼容代码。打电话。(int $0x80)
此代码适用于Intel 32位奔腾平台,使用AT&T语法编写
#cpuid.s Sample program to extract the processor Vendor ID
.section .data
output:
.ascii “The processor Vendor ID is ‘xxxxxxxxxxxx’\n”
.section .text
.globl _start
_start:
movl $0, %eax
cpuid
movl $out
我已经在我的linux x86_64上构建了一个在C上编写的短程序和内联程序集。它应该写一个字符串到stdout。我在网上的一篇文章里找到的:
int write_call( int fd, const char * str, int len ){
long __res;
__asm__ volatile ( "int $0x80":
"=a" (__res):"0"(__NR_write),"b"((long)(fd)),"c"((long)(str)),"d"((
我尝试将内存动态分配到堆中,然后在这些内存地址中赋值。我知道如何分配内存,但是我如何将寄存器中的值分配给第一个动态内存地址呢?这就是我到目前为止所知道的:
push rbp
mov rbp, rsp ;initialize an empy stack to create activation records for the rest of the subroutines
我做了一个叫做embed的程序
源代码如下。
问题:,我不知道为什么这个程序会无限运行。
我的开发环境是linux、emacs、程序集、x86、at&t语法。
#usage : embed input output message
#this program embed message to input's text and make an output file
#example1:
#input: "abcde"
#message: dc
#output: "abcDe"
#exampl
今天,我开始学习在linux上使用NASM进行x86_64汇编。我成功地编写了一个hello world程序。现在我想编写另一个简单的程序。程序应该要求用户输入他的名字,然后打印"hi name“。我的问题是,程序不会要求提供名称。如果我启动这个程序,它不会打印任何东西,也不会出现错误而停止。以下是我的代码:
section .data
msg1 db "Type in ur Name? ", 10
len1 equ $ - msg1 ; Get the Size of msg1
msg2 db "Hi, "
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov edx, len ;message length
mov ecx, msg ;message to write
mov ebx, 1 ;file descriptor (stdout)
mov eax, 4 ;system call number (sys_write)
i
我想在NASM(Linux)中添加两位数字.要添加两个简单数字,我使用以下代码:
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov eax,'3'
sub eax, '0'
mov ebx, '4'
sub ebx, '0'
add eax, ebx
add eax, '0&
我正在努力学习在64位Linux上使用NASM进行组装。
我成功地制作了一个程序,读取两个数字并将它们相加。我意识到的第一件事是,该程序只适用于一位数字(和结果):
; Calculator
SECTION .data
msg1 db "Enter the first number: "
msg1len equ $-msg1
msg2 db "Enter the second number: "
msg2len equ $-msg2
msg3 db "The result is: "
我有一个关于测试的问题,在Debian Linux (Jessie/ gdb )中我不能完全解决这个问题。尝试调试汇编程序时,我无法让gdb接受输入重定向。下面是我尝试调试的代码:
#The program reverses the input given to it. For example "123456789" will
#become "987654321"
.global _start
readme:
pushw $0 #allocate 2 bytes onto the stack
movl $3,%eax
我是asm的新手,正在尝试使用一些操作码来获得它。我在64位的linux上工作,在使用movsb时总是有一个分段错误。我用nasm编译:
nasm -f elf64 test.asm
以下是代码
DEFAULT ABS
segment data
data:
texte: db 'Hello, World !!', 10, 13
len: equ $-texte
texteBis: db 'Hello, World !.', 10, 13
segment code
global main
main:
;The p