草庐IT

ASSEMBLY

全部标签

windows - 我怎样才能在 win32 汇编程序(特别是 nasm)中获得脉冲?

我打算制作一个时钟。一个实际的时钟,不适用于Windows。但是,我希望现在能够编写大部分代码。我将使用PIC16F628A来驱动时钟,它有一个我可以访问的定时器(实际上,除了它内置的时钟之外,它还有3个)。然而,Windows似乎没有这个功能。这使得制作时钟有点困难,因为我需要知道它已经过了多长时间才能更新当前时间。所以我需要知道如何在Windows中获得脉冲(1Hz、1KHz,只要我知道它有多快就无所谓了)。 最佳答案 Windows中有许多可用的计时器对象。可能最容易用于您的目的的是多媒体计时器,但它已被弃用。它仍然可以工作,

windows - x86 程序中的控制台

.386.modelflat,stdcalloptioncasemap:noneincludewindows.incincludekernel32.incincludeuser32.incincludelibuser32.libincludelibkernel32.libMainproto.datahOutputdd0bReadWrittendd0szText1db"What'syourname?",0hInputdd0szInputdb128dup(0).data?.codestart:InvokeMainInvokeExitProcess,0MainprocinvokeGetStd

windows - x64下的线程信息 block

我需要从x64平台上的TIB获取最大和最小堆栈(我知道我需要用GS寄存器替换FS寄存器。)在x86平台上我可以使用thistable并找到正确的偏移量你知道我在哪里可以找到x64平台的表格吗? 最佳答案 这是一个适用于x86和x64的程序。#include#includevoidmain(){PNT_TIBptib=(PNT_TIB)NtCurrentTeb();#ifdef_AMD64_printf("Stackbase:%08I64X,limit:%08I64X\n",ptib->StackBase,ptib->StackLim

windows - 所有基于 Windows 的程序都使用 Windows API 吗?没有它如何制作程序?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我从事编程已有数年,我知道如何使用预先存在的/标准库创建我自己的复杂方法。我一直想知道(例如Java)在Java中创建JFrame对象时如何创建JFrame?您如何使用标准代码(无库)编写GUI或创建文件、读取文件等复杂操作的代码。如果我们使用的所有这些现有方法都可以比作我们用来build金字塔的积木。这些block最初是如何创建的?(我的意思是技术上)

windows - MASM32 - "Unresolved external symbols"链接时带有下划线

我从以下网站下载并解压了MASM32+SDK:http://www.masm32.com/masmdl.htm然后我使用ml.exe和link.exe编译并链接了以下程序:.386.modelflat,stdcall;Windowslibrariesincludelib\masm32\lib\kernel32.libincludelib\masm32\lib\user32.libextrnMessageBoxA@16:PROCextrnExitProcess@4:PROCoptioncasemap:none;Treatlabelsascase-sensitive.DATA;Begini

windows - Windows CE 的汇编语言

如何用汇编语言为WindowsCE(x86)编写程序?现在我正在使用VS2008winthWindowsCE5.0SDK,我的C++程序运行良好。我尝试用我的代码创建一个asm文件并将其包含到项目中:#include"stdafx.h"#include"windows.h"extern"C"voidclear();int_tmain(intargc,_TCHAR*argv[]){clear();return0;}清除.asm:.586;Targetprocessor.UseinstructionsforPentiumclassmachines.MODELFLAT,C;Usethefla

c - PEB地址(0x07FF DA00)是加载进程基地址的RV吗?

我正在尝试使用C/ASM中的PEB结构,但在此之前我想了解一些基础知识。我在某处读到,大多数进程在地址0x07FFDA00处都有它们的PEB。现在这个地址是相对于进程基地址的,即(0x00400000+0x07FFDA00==PEBbaseaddr)?因为所有进程当然不能将它们的PEB指向这个地址。 最佳答案 Becauseallprocessescan'thavetheirPEBtothisaddressofcourse.如果0x07FFDA00和0x00400000都是虚拟地址,那么所有进程都可以在该地址拥有它们的PEB。正如您

windows - 访问 x64 TEB C++ 和程序集

在32位汇编中,我可以访问TEB结构的ProcessEnvironmentBlock。我从那里访问TEB结构的Ldr。此处描述了此技术:http://en.wikipedia.org/wiki/Win32_Thread_Information_Block在32位汇编中执行此操作的代码是:void*ptr=NULL;__asm{moveax,FS:[0x18]moveax,[eax+0x30]//OffsetofPEBmoveax,[eax+0x0C]//OffsetofLDRinPEBstructuremoveax,_ptr};std::coutTEB结构可以在这里看到:http://

c# - LoadLibrary 内部的访问冲突

我正在使用CreateRemoteProcess将一些汇编程序代码注入(inject)远程进程(64位),然后加载一个dll,但我在LoadLibraryA中得到一个C0000005EXCEPTION_ACCESS_VIOLATION用于加载我的.dll文件的调用。这里是注入(inject)的汇编代码(下面截图中的地址不同,但这些是相对于写入前的远程内存地址计算的):MOVRCX,2A0DFF0020MOVRAX,CALLRAXMOVRCX,RAXMOVRDX,2A0DFF0030MOVRAX,CALLRAXMOVQWORDPTRDS:[2A0DFF0010],RAXMOVRCX,2A

windows - 如何在 Win10 中使用 link.exe 链接来自 NASM 的 obj 文件

我在NASM中有以下代码:;sleep.asm[SECTION.text]global_start_start:xoreax,eaxmovebx,0x00016630;addressofSleepmovax,5000;pausefor5000mspusheaxcallebx;Sleep(ms);其中0x00016630是Sleep函数的地址(从kernel32.dll的dumpbin中获取)。我想制作可执行文件以在Win10中运行。我所做的是:nasm-fwin32sleep.asm并得到sleep.obj作为结果。所以现在我必须链接它。不幸的是,我使用以下命令选择了link.exel