我正在尝试在NASM中创建一个x86汇编宏,它使用ANSI转义代码将光标移动到用户终端窗口中指定的X、Y坐标。代码是:
; MoveCursor X, Y
segment .data
format:
db `\033[%d;%dH` ; First %d is Y coordinate, second %d is X coordinate
; Backticks tell NASM to process these as C-Strings
; Semicolon sepe
Windows 10命令脚本问题。
尝试有条件地更新.cmd脚本中的PATH环境变量。我想根据另一个环境变量的存在在PATH前面加上一些东西。如果未设置环境变量,则不应向路径中添加任何内容。如果已设置,则在前面加上它。
这是我最小的可重现的例子。将以下内容保存到磁盘上的script.cmd文件中:
echo off
REM Simulate a user with a PATH that has C:\program files (x86) within it
PATH c:\program files (x86)\my company app;%PATH%
set _PERL_PATH=D
不幸的是,互联网缺乏关于如何将x86程序集实现到C程序的指南。另外,很多人都想知道不同的语法(IT&T和Intel)。
就我个人而言,我不知道如何做到这一点,处理不同的编译器/汇编程序,如NASM或GCC。
我创建了以下高度复杂的程序:
#include <stdio.h>
extern int add_imm(int,int);
int main(int argv, char** argc){
int a = 2;
int b = 3;
int c = add_imm(a,b);
printf("%d", c);
}
再加上另一个非常复
我想在NASM中更改变量的值。
我在网上搜索了很长一段时间,尝试了很多东西。
我试过了:
global _main
extern _printf
section .data
original: db "Hello, world", 10, 0
new: db "Hello", 10, 0
section .text
_main:
mov [original], new
push original
call _printf
add esp, 4
ret
这不起作用,所以我试过了。
global _main
ex
我的教授。请我在linux下通过NASM X86 64位进行汇编语言编程。
因为,我有Mac与我的程序将需要修改的MacOS,可能是由于系统调用和任何其他原因。
我应该如何复制我的prof.in my macos询问的相同环境?
如果我在我的Macbook中安装linux,它会足够好吗?
如果是,那么"Linux in Windows PC“和"Linux in Mac”在我将要编写的程序方面会有什么区别呢?如果没有,那我该怎么处理呢?
我正在编写一个以两个字符串作为输入并将它们连接起来的汇编程序。下面是我所拥有的:(使用NASM语法)
SECTION .data
hello: db "Hello ",0
world: db "world!",0
SECTION .text
; do the concatenation
由于我以前从未在x86程序集中处理过任何字符串,所以首先我需要知道如何存储和操作字符串。
我猜想,一旦知道每个字符串的长度,连接就只需要移动内存块。该部分可以用libc进行简化。(我可以使用strlen()和strcat()。)
我真正的问题是,我不熟悉字
我试图在NASM中运行一个简单的Hello程序。我想打印到控制台,而不使用C-库,直接与WinAPI接口.
我使用Visual提供的LINK.EXE进行链接。
到目前为止,这是我的代码:
section .data
message: db 'Hello world!',10 ; 'Hello world!' plus a linefeed character
messageLen: db $-message ; Length of the 'Hello world!' string
glob
为了在NASM中实践,我试图做以下几件事:
1)用C从命令行读取字符串。
2)将该字符串传递给NASM函数,该函数将字符串作为其第一个参数。
3)从NASM函数返回精确字符串
prefix.asm:
;nasm -f elf32 prefix.asm -o prefix.o
segment .bss
pre resb 256
segment .text
global prefix
prefix:
push ebp ;save the old base pointer value
mov ebp,esp ;base po
我试图在sum程序集中编写一个简单的x86函数--将3和8作为参数传递给它。但是,代码没有打印和。感谢在发现错误方面的任何帮助。我在用NASM
section .text
global _start
_sum:
push ebp
mov ebp, esp
push edi
push esi ;prologue ends
mov eax, [ebp+8]
add eax, [ebp+12]
pop esi ;epilogue begins
pop edi
mov esp, ebp
我开始学习Windows上的x86程序集。我正在学习32位x86程序集。我使用nasm和ld来编译我的程序。我使用一个mingw32-make生成文件作为我的构建系统。我假设ld包括在MinGW中,但我不确定。我只知道它已经在我的电脑上了。
我想编写一个非常简单的程序,只是为了确保一切正常工作,当然不是。在运行我的可执行文件时,一个巨大的蓝色盒子出现了,并说“这个应用程序不能在你的电脑上运行”。在关闭通知后,Access is denied在我的终端上打印了单词。
这是我的节目:
global _main
_main:
mov eax, 1
ret
这是我的makefile
main