标签: nasm

弹出的NASM(英特尔)ASM错误

每当我尝试使用NASM编译我的代码时,有一个"pop"(在这种情况下为"pop al"),它会给我一个错误.

20: error: invalid combination of opcode and operands
Run Code Online (Sandbox Code Playgroud)

在第20行,我有

pop al
Run Code Online (Sandbox Code Playgroud)

有什么问题?

x86 assembly nasm

-2
推荐指数
1
解决办法
174
查看次数

NASM中示例代码中$和$$的真正含义

我看到如下代码:

section .data
   db 'hello'
   db  'h', 'e', 'l','l','o'
   data_segment_size  equ $-$$
Run Code Online (Sandbox Code Playgroud)

为什么data_segment_size等于25?我知道$和$$表示什么,但是根据我的书我不明白为什么这个变量是25。也许那本书里有一个错误。

x86 assembly nasm

-2
推荐指数
1
解决办法
1063
查看次数

切换到VESA / VBE?

因此,我目前正在使用操作系统,并且处于非常愚蠢的状态:切换到VESA / VBE

我当前的代码:

mov ax, 0x4F02
mov bx, 0x4118
int 0x10
Run Code Online (Sandbox Code Playgroud)

它改变了Qemu分辨率,但是现在我在绘制像素时遇到了问题。像素偏移的公式为:

uint32 pixel_offset = y * pitch + (x * (bpp/8)) + framebuffer;
Run Code Online (Sandbox Code Playgroud)

问题是bpp,pitch和framebuffer应该由

mov ax, 0x4F01
int 0x10
Run Code Online (Sandbox Code Playgroud)

mov ax, 0x4F00
int 0x10
Run Code Online (Sandbox Code Playgroud)

第一,

mov ax, 0x4F00
int 0x10
Run Code Online (Sandbox Code Playgroud)

软锁qemu。即使没有,我该怎么做才能访问该信息。

我想要的是一个功能,该功能可以切换为完全用汇编语言(nasm)编写的VESA / VBE,然后可以使用我的内核编写的函数访问。

编辑:我真的不能在我的引导程序中包含任何C。我需要汇编代码。

x86 assembly nasm osdev vesa

-2
推荐指数
1
解决办法
213
查看次数

NASM 代表 nop 组装为暂停

考虑以下用 x86 汇编语言编写的函数

foo:
        rep
        nop
        ret
Run Code Online (Sandbox Code Playgroud)

使用 NASM 汇编代码并反汇编它,gdb我们有:

(gdb) disas foo
Dump of assembler code for function foo:
   0x0000000000000610 <+0>:     pause  ;pause ????
   0x0000000000000612 <+2>:     ret    
   0x0000000000000613 <+3>:     nop    WORD PTR cs:[rax+rax*1+0x0]
   0x000000000000061d <+13>:    nop    DWORD PTR [rax]
End of assembler dump.
Run Code Online (Sandbox Code Playgroud)

它使用pause原始程序集中未提供的指令。为什么会这样?这是 NASM 故意记录的行为吗?那么如果一些早期的 x86cpu没有pause我们可以直接使用rep nop吗?

x86 assembly gdb x86-64 nasm

-2
推荐指数
1
解决办法
361
查看次数

汇编 - 操作码与nasm指令

所以我最近试图进入组装,并发现自己真的与NASM的工作方式混淆.据我所知,它是一种用于汇编的"编译器",它将(记忆)指令转换为实际的机器代码.现在我想知道NASM手册(www.nasm.us/doc/nasmdocb.html)中列出的说明和我的机器所采用的操作码之间有什么区别?比如,让我们假装我的英特尔处理器有某种秘密操作码,没有人知道并且没有在手册中列出,NASM是否仍然可以组装它?或者只是返回'无效指令'?并说我知道操作码的机器码格式,我能够手动插入吗?

assembly nasm opcode

-3
推荐指数
1
解决办法
1130
查看次数

我无法让 SASM 在 Linux 上运行

我是 linux 新手,我对构建和其他东西了解不多。我尝试安装 sasm:下载它,解压缩它,尝试了所有不同的安装方法,但没有一个工作。

http://sureshat.blogspot.com/2016/10/installing-sasm-assembly-ide-in-ubuntu.html

...是我找到的唯一正确指南,但是,可能导致安装 SASM 的给定链接已失效,它不想工作。有没有人可以帮我解决这个问题?

谢谢,马丁

assembly nasm sasm

-3
推荐指数
1
解决办法
3383
查看次数

推动ecx做什么?

我看到代码,push ecx我不知道它的目的.它是否将ecx的值更改为其他值?

assembly nasm

-4
推荐指数
1
解决办法
6496
查看次数

找不到错误!! 尝试循环遍历字符串并将小写字母更改为x86汇编语言中的大写字母

section .data   
  msg db  "sum of x and y is " ;String
section .text
global _start
_start:
Change_letter:
  mov ECX, -1 ;set counter 
  mov ESI, [msg] ; move string address to ESI
  mov Eax , 32 ; mov 32 to eax for change lowercase to uppercase
startloop:
  inc ecx  ; 
  cmp byte [ESI+ecx], 0x00 ;compare with null 
  jne end
  cmp byte [ESI+ECX], 0x61 ; compare with lower bound of lowercase 
  jl startloop
  cmp byte [ESI+ECX], 0x7A
  jg startloop
  add byte …
Run Code Online (Sandbox Code Playgroud)

x86 assembly nasm

-4
推荐指数
1
解决办法
45
查看次数

标签 统计

assembly ×8

nasm ×8

x86 ×5

gdb ×1

opcode ×1

osdev ×1

sasm ×1

vesa ×1

x86-64 ×1