x86相关内容

汇编MOV问题

我的下一个code: MOV AX,@数据 MOV DS,AX 为什么我不能写就这样? MOV DS,@数据 所有的源: .MODEL小 .STACK 100H 。数据 HelloMessage DB“你好,世界”13,10,“$” 。code 。启动 MOV AX,@数据 MOV DS,AX MOV啊,9 MOV DX,OFFSE ..
发布时间:2016-07-18 20:28:49 .NET Framework

在弹出汇编语言CD /光驱

这不可能是简单的,但并不做什么改变。 我有我使用的是看,如果光驱将弹出一个简单的code 在code是用汇编语言,英特尔NASM的语法。 [位16] [ORG 0X07C00] STI喷射:MOV啊,46H MOV人,00H MOV DL,00H INT 13Hendprogram: 次510 - ($ - $$)0分贝 将0x55分贝 DB和0xAA 我可以简单地增加驱动器号, ..
发布时间:2016-07-18 20:28:46 .NET Framework

无法从MSR读回

我写一个内核模块,它是关于阅读和写作的MSR。我写了一个简单的程序进行测试,但它仍然失败。所有它做的是写MSR,然后回读。这里是code: 静态INT __init test3_init(无效) { uint32_t的HI,LO; 喜= 0; LO = 0XB; ASM挥发性(“MOV%0 %% EAX”::“R”(LO)); ASM挥发性(“MOV%0 %% E ..
发布时间:2016-07-18 20:28:43 .NET Framework

NASM 16位英特尔

我有指向一个地址,并在我的情况字节的变量写大小麻​​烦。这给我的错误“错误:无效的有效地址”: 字节MOV [AX],字节为0x0 一些试错后,我测试相同,但与EAX。这将编译就好了:字节MOV [EAX],字节为0x0 我是什么在这里失踪? 解决方案 [AX] 是一个无效的内存操作数规格。 在有效的16位的是: [常量]结果 [BX]结果 [SI]结果 [二]结果 [BX + ..
发布时间:2016-07-18 20:28:28 .NET Framework

MASM32调用标准输出不会有任何输出

我使用MASM32来编译和Windows 7的链接,这工作只是低于code罚款。然而调用stdout不是简单地印在我的命令提示符下任何东西。我究竟做错了什么? .386.MODEL平,STDCALL 选项​​casemap:无 包括C:\\ MASM32 \\包括\\ windows.inc 包括C:\\ MASM32 \\包括\\ kernel32.inc 包括 ..
发布时间:2016-07-18 20:28:24 .NET Framework

是什么idivl和DIVL的区别?

我有这些前pressions: cltd idivl(ECX%) 除以当 INT 和 MOVL $ 0%EDX DIVL(ECX%) 分的当无符号长 cltd 解决方案 IDIV 进行签署师, DIV 执行无符号除法。 ..
发布时间:2016-07-18 20:28:19 .NET Framework

内存到内存的MOV - 正确的语法

我试图完成与ASM以下内容: MOV [00A30020],[EBX + 50] 所以,我想 MOV 的价值EBX + 50 进入00A30020,但是编译器说,这是一个无效的声明。 解决方案 有作为一个的内存的没有这样的事的内存的移动(与 MOV ,里面还有移动字符串)。请参见此表。 您可以加载 [EBX + 50] 在一个寄存器,然后储存,或做 推DWORD [EBX + 50 ..
发布时间:2016-07-18 20:28:14 .NET Framework

TASM 1.4 - 改变背景颜色,但不清除屏幕?

我使用TASM 1.4。 我试图改变的背景和文本的颜色不清除previous文本,但它总是尽管颜色变清previous文本结束。 例如: MOV啊,09H LEA DX,文本1 INT 21H;显示文本1 MOV啊,01H INT 21H;我输入一个字符 MOV啊,06H MOV BH,42小时 MOV CX,0000H MOV DX,184fh 诠释10H;我用这个来改变文字和背景颜色 ..
发布时间:2016-07-18 20:27:57 .NET Framework

在MASM宏中使用本地标签问题

我写了一个宏以 E,NE,A,B ...作为一个参数,并即单个命令 MOV EAX,EBX 如果条件由preceding设置这将执行 CMP 操作是真实的。 一个例子调用会是什么样子。 CMP BX,20 mDoIf E,<调用姆preGS> 我遇到的问题是,当我尝试用下面的定义编译我得到两个错误之一。随着本地的定义,我得到一个未定义的符号错误:?? 0000 。当我删除本地 ..
发布时间:2016-07-18 20:27:47 .NET Framework

大会师的x86与DX:AX

我与MASM工作,我以前遇到过的情景,我不容易理解如何解决,例如: X =(A)/(C * D) 如果我多C *Ð第一,我的价值是DX:AX据我所知,我不能使用,作为除数。如果我做单独的司A / C和A / D,我冒丢失precision(从提醒等)的风险。什么是实现这个的最佳方式? 解决方案 当你正确地指出,你不能用一个32位的数字为16位除法除数,但由于我们只关心这样做整数除法,这 ..
发布时间:2016-07-18 20:27:29 .NET Framework

无法移动8位地址为16位寄存器

我试图赋予变量在这里注册的是code: ORG 100H VAR1 DB 10; VAR2 DB 20; MOV BX,VAR1;错误:操作数不匹配:16位寄存器和8位地址 RET 结束 但是,如果换用4号线: MOV BL,VAR1; 它的工作原理。所以我的问题是,为什么不能我谨 8位的变量到更大的16位寄存器? 我已经提到 ..
发布时间:2016-07-18 20:27:23 .NET Framework

你怎么可以拉从寄存器中的值?

我试图找出如何从ASM指令,进入C ++中的变量拉寄存器值。 例如:MOV DWORD PTR DS:[ESI],EDI (假设值EDI认为是一个int)int值= EDI; 解决方案 取决于你的编译器。搜索“内联汇编”,您使用的编译器。例如用VC ++ int32_t X; _asm MOV X,EAX; (可能是__asm​​)。 GNU使用不同的语法 ..
发布时间:2016-07-18 20:27:04 C/C++开发

用户输入和输出并不在我的组装code工作

下面的程序编译没有错误,但运行时不会提示任何输入和任何打印。有什么问题,我怎么能解决这个问题? 我使用这些命令汇编和链接: 的/ usr / local / bin目录/ NASM -f macho32 $ 1 LD -macosx_version_min 10.9.0 -lSystem -o运行$ filename.o -e _start -lc 我的code是:部分。数据 ;新 ..
发布时间:2016-07-18 20:26:58 .NET Framework

装配在x86_64 I386 code

预期下code不工作: .intel_syntax没有preFIX .arch I386 。数据 你好,世界: .ascii的“Hello world!\\ n” hello_world_end: .EQU hello_world_len,hello_world_end - 参考hello world 。文本 。全球_start _开始: MOV EBX,1 MOV ECX,参考hello ..
发布时间:2016-07-18 20:26:46 .NET Framework

我们为什么需要堆栈分配,当我们有一个红色区域?

我有以下疑问: 正如我们所知道的System V ABI X86-64给了我们关于一个固定大小的区域(128字节)的堆栈帧,所谓的redzone后面。 所以,作为一个结果,我们并不需要使用,例如,子RSP,12 。只要 MOV [RSP-12,X 而这一切。 但我不能掌握这一想法。为什么这有关系?是否有必要子RSP,12 没有redzone后面?毕竟,堆栈大小在一开始的限制,为什么子RSP, ..
发布时间:2016-07-18 20:26:31 .NET Framework

如何在NASM组装进入32位保护模式?

我学习x86汇编,我试图做一个玩具的操作系统在NASM,但我不明白一些事情。 我做了一个引导程序被成功引导我的内核: 负载从包含的内核文件的软盘14个行业; 搜索标记这些部门的文件 kernel.feo ; 的文件到内存偏移为0x2000 负载; 执行使用远跳 JMP为0x2000内核:0×0000 所以,我必须位于内核code为0x2000:0 在记忆中。 CS 可能是正确的 ..
发布时间:2016-07-18 20:25:57 .NET Framework