我是汇编的初学者,我不知道db,dw,dd是什么意思.我试图写这个做1 + 1的小脚本,将它存储在一个变量中,然后显示结果.到目前为止,这是我的代码:
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
.data
num db ? ; set variable . Here is where I don't know what data type to use.
.code
start:
mov eax, 1 ; add 1 to eax register
mov ebx, 1 ; add 1 to ebx register
add eax, ebx ; add registers eax and ebx
push eax ; push eax into the stack
pop num ; pop …Run Code Online (Sandbox Code Playgroud) 我一直在尝试创建一个在浏览器中运行的网络套接字聊天室。我做了一些谷歌搜索,发现了一个提供示例 websocket 连接的网站 (www.websocket.org/echo.html)。但每当我尝试他们的“连接”按钮时,它会立即显示“已断开连接”,并且我无法发送消息(这只发生在 Chrome 上)。所以我在 Firefox 上尝试了它,它显示“错误:未定义”,然后“已断开连接”。两种浏览器都支持 websocket 技术。
所以我去了另一个网站(http://www.tutorialspoint.com/html5/html5_websocket.htm)并复制了示例代码,将其另存为“.html”并在chrome中运行。它无法连接到 websocket。相反,它说“已断开连接”。
问题:为什么我无法连接到 websocket/为什么它总是断开连接?我的 Chrome 版本是 21.0.1180.60。
为了进一步参考,这是迄今为止我的代码(注意:这只是应该连接并表示它已连接,而不是实际聊天):
<!doctype html>
<head>
<title>Testing</title>
</head>
<body>
<script type="text/javascript">
function confirm() {
if ("WebSocket" in window) {
alert("WebSocket is supported by your Browser!");
}
else {
alert("Your Browser does not support WebSocket Technology. Please update your Browser.");
}
}
function sendmessage() {
try {
var ws = new WebSocket("ws://(ip of other user/")
}
catch(err)
{
alert("Error with creating the WebSocket")
}
}
</script> …Run Code Online (Sandbox Code Playgroud) 我很难找到一个开始学习汇编的好地方。我在整个互联网上发现了许多相互矛盾的信息,这些信息涉及实际是什么程序集、要使用哪些汇编程序、什么是汇编程序,以及英特尔是否为其特定 CPU 系列发布了一种“核心”汇编语言(我有一个英特尔x86 CPU 所以这就是我想学习汇编的目的)。
有人可以解释上述问题。据我所知,英特尔发布了带有指令集/参考的 CPU 系列(例如 x86),并且各种汇编程序(MASM、FASM、NASM 等)提供了一种更高级别的人类可读语言,用于使机器码指令。
另外,据我所知,当有人说“汇编语言”时,这实际上是指由许多不同的汇编程序提供的许多不同风格的汇编语言中的一种。 http://en.wikipedia.org/wiki/X86_assembly_language#Examples MASM 风格汇编与 NASM 风格汇编
我正在寻找的是“第一个”汇编程序,没有 MASM、NASM 等提供的变体(例如大型宏库)。所有这些组装者一定来自某个地方,这就是我正在寻找的。
基本上,我正在寻找第一个 x86 汇编器/汇编语言,在 MASM、NASM 等之前。有人能给我提供第一个汇编器的链接吗?
顺便说一句,如果我关于组装的整个逻辑是错误的,有人可以澄清一下!
提前致谢,
程序
我正在创建一个用户输入数字的程序,程序从零打印到该数字.这是我的代码:
SECTION .DATA
len EQU 32
SECTION .bss
data resw len
other resw len
SECTION .TEXT
GLOBAL _start
_start:
input: ; This section gets the integer from the user
mov eax, 3 ; }
mov ebx, 1 ; }
mov ecx, data ; } System_read call
mov edx, len ; }
int 80h ; }
prelim:
mov ebp, 0
setup: ; This section sets up the registers ready for looping
push ebp
pop other ; THIS IS THE ERROR LINE! …Run Code Online (Sandbox Code Playgroud) 平台:奔腾 4 处理器(我真的需要升级:)运行 Windows XP。我目前正在使用 MASM32 进行组装。
我是汇编的绝对初学者,我正在尝试找出如何添加变量。我了解如何定义变量、将数据放入寄存器以及如何将寄存器放入堆栈,但我不知道如何组合两个变量的值(通过相加)。
另外,谁能给我一个关于 x86 汇编的易于理解的教程的链接或其他内容,到目前为止我发现的所有教程都是非常高级的东西,而且它们没有解释太多。那将非常感激。
预先感谢,Progrmr
只是想知道,关于我的内置宏的替代方案,是否可以通过使用int 21h windows API 来避免使用StdOut宏?如:
.data
msg dd 'This will be displayed'
;original macro usage:
invoke StdOut, addr msg
;what I want to know will work
push msg
int 21h ; If this does what I think it does, it should print msg
Run Code Online (Sandbox Code Playgroud)
是否存在这样的事情(如使用int 21h打印东西),或者存在类似的东西,但不完全是21h.或者我完全错了.
有人可以为我澄清一下吗?
谢谢,
Progrmr
如果我有一个这样声明的字符串:
message db "ABCDEFGHIJ",0
Run Code Online (Sandbox Code Playgroud)
我怎样才能创建一个指针,让我指向这个字符串中的特定字符,例如“A”字符。而且,我怎样才能创建一个循环来允许我增加指针并因此循环遍历整个字符串?
我有一个简单的程序,它增加1 + 1直到它达到一百万,然后它打印"完成!" 到控制台.但是当它运行时,它什么都不做.这是代码:
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
.data
main dd 0
msg db "Done!", 0
.code
start:
_loop: mov eax, 1
mov main, eax
cmp main, 1000000
jz _next
jmp _loop
_next: invoke StdOut, addr msg
invoke ExitProcess, 0
end start
Run Code Online (Sandbox Code Playgroud)
当我运行它时它什么都不做.我不明白为什么.我目前通过cmd运行它,通过单击并将其拖动到提示符并按Enter键.而且,MASM32是最容易学习的汇编程序,还是有更好更容易的汇编程序?如果是这样,有人可以发布那些更好的吗?谢谢.我只是需要一个地方开始学习x86程序集.
提前致谢,
Progrmr
我正在关注Iczelion的Win32教程,特别是教程3("简单窗口"),当试图为了实验而"剥离"一些错误处理和不必要的代码时,我在编译时遇到以下错误:
test.asm(38) : error A2111: conflicting parameter definition.
Run Code Online (Sandbox Code Playgroud)
这是一行:
第38行:
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdShow:DWORD
Run Code Online (Sandbox Code Playgroud)
我的问题是:这行代码有什么问题?
提前致谢.
编辑:
这是整个脚本,其中有违规行注释:
.386
.model flat, stdcall
option casemap :none
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib
.data
ClassName db "Testwin", 0
AppName db "Testing Window", 0
.data?
hInstance HINSTANCE ?
.code
start:
push NULL
call GetModuleHandle
mov hInstance,eax
push SW_SHOWDEFAULT
push NULL
push hInstance
call WinMain
push eax
call ExitProcess
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdShow:DWORD ; this …Run Code Online (Sandbox Code Playgroud)