我试图在Win64平台中跟踪汇编代码:
当指令执行到:
0000000000402590 FF25525E0000 jmp dword ptr [rel $00005e52]
Run Code Online (Sandbox Code Playgroud)
跳转后,它会去地址:
00000000006B3F90 56 push rsi
Run Code Online (Sandbox Code Playgroud)
jmp指令如何检索跳转到的地址?[rel $ 00005e52]是什么意思?
我想知道如何实际获取正在运行的文件的名称而不是程序集名称,而是在C#.NET中获取文件的名称,
我试过了
System.Reflection.Assembly.GetEntryAssembly().GetName().Name
Run Code Online (Sandbox Code Playgroud)
这给出了程序集的名称,但我正在寻找exe文件的名称.
谢谢!
为什么这个程序没有打印到屏幕上,我在INT 80命令上遗漏了什么?
section .bss
section .data
hello: db "Hello World",0xa ;10 is EOL
section .text
global _start
_start:
mov ecx, 0; ; int i = 0;
loop:
mov dl, byte [hello + ecx] ; while(data[i] != EOF) {
cmp dl, 0xa ;
je exit ;
mov ebx, ecx ; store conetents of i (ecx)
; Print single character
mov eax, 4 ; set sys_write syscall
mov ecx, byte [hello + ebx] ; ...
mov edx, 1 ; move one byte …Run Code Online (Sandbox Code Playgroud) 在为练习测试解决MCQ时,我遇到了这样的说法 - "在任何程序中,100%的声明覆盖率意味着100%的分支覆盖率"并且它被称为不正确.我认为这是一个正确的陈述,因为如果我们涵盖所有陈述,那么这意味着我们也涵盖了所有路径,因此也覆盖了所有分支.有人可以对这个问题有所了解吗?
是否有可能,某些UTF8符号包含字节0x0D 0x0A,因为它的一部分?如果是的话,这些符号是什么?
(我试图解决的任务是从特定点读取文本UTF8文件,而不是从一开始)
我在Assembly(NASM语法)中编写了一个简单的引导加载程序,但是当我在QEMU中运行它时,换行符显示如下:

这是我的代码:
有没有办法阻止0Ah向前推进线路?
.loop_top:
mov si, text_string ; Put string position into SI
call print_string ; Call our string-printing routine
loop .loop_top
jmp $ ; Jump here - infinite loop!
text_string db "This is my cool new OS!", 0Ah, 0
Run Code Online (Sandbox Code Playgroud) 我们都知道,在x86 arch中,数据和代码混合在内存或磁盘中。但如何告诉他们呢?
\n\npaper\xef\xbc\x8c 需要该方法,我不期望 100% 的准确度。80% 就可以了,甚至一些想法也可以:)
\n为什么我们没有 4 位大小的数据类型?如果我们如此倾向,为什么我们不能制造它们?我见过位域,但我听说它们不可移植,也许也不常用?我认为这是机器如何解释位位置的位置值的结果。(大端,小端)
typedef struct
{
int b1 : 1;
int b2 : 1;
..
..
..
int b32 : 1;
} bitfield32;
Run Code Online (Sandbox Code Playgroud)
我们也不能制作这样一个比任何原始类型都大的位域。那么为什么要限制呢?可以在组装中完成吗?
我是汇编新手,现在我试图弄清楚dw、和 中的db、 和?意味着什么struc。
例如这里:
struc segment_descriptor
seg_length0_15 dw ?
base_addr0_15 dw ?
base_addr16_23 db ?
flags db ?
access db ?
base_addr24_31 db ?
ends segment_descriptor
Run Code Online (Sandbox Code Playgroud) 我得到了以下代码,我想在每一步之后写下观察结果。代码是:
MOV AL,15
MOV AH,0FFH
XOR AL,AL
MOV CL,3
SHR AX,CL
Run Code Online (Sandbox Code Playgroud)
现在唯一让我困惑的是 SHR 命令。我知道它会将 AX 的值移动 3 倍,但它是如何做到的呢?