1.如何用汇编语言写个小程序“HELLO WORD
;堆栈段
;-----------------------------------------
stack segment stack
db 100(?)
stack ends
;数据段
;-----------------------------------------
data segment
szhello db 'hello,word',0dh,0ah,'$'
;-----------------------------------------
data ends
;-----------------------------------------
;代码段
;-----------------------------------------
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax
mov ah,9
mov dx,offset szhello
int 21h
mov ah,4ch
int 21h
code ends
end start
这个就行了 编译一下就行了。解释就不打了应该看的明白吧。和下面的差不多。
2.,HelloWorld的小程序,
Java 不是编译型的语言,它是半编译半解释的,用 JDK 只能编译成 Class 文件,再由 JVM 解释。
所以不能编译成 EXE。但是有一些 Java 的编译器,比如 JBuilder 之类的,也可以支持它的编译。
由于编译后的 EXE 依赖于某个平台,而由不同平台的 JVM 解释的 Class 文件可以跨平台,所以如果你将 Java 编译成 EXE 以后,就决定了它依赖于 Windows,而不能移植。Java 的可移植性就无法体现了。
如果你真的想编译成 EXE,建议使用 JBuilder,而不是单纯的 Sun JDK。
3.用汇编语言编写一个小程序(比如hello,word
您正在看的汇编语言是:hello,world!win32汇编小程序。
首先我们看一个“复杂”的Win32汇编程序程序用来显示一个消息框--------------------------------------------------;文件名:3。 asm 。
386 。model flat ,stdcallNULL equ 0MB_OK equ 0ExitProcess PROTO :DwordMessageBoxA PROTO :DWORD,:DWORD,:DWORD,:Dwordincludelib kernel32。
libincludelib user32。lib 。
dataszText db "Hello, world!",0szCaption db "Win32Asm",0 。 code start: push MB_OK lea eax,szCaption push eax lea eax,szText push eax push NULL call messageboxa xor eax,eax push eax call exitprocess end start--------------------------------------------------编译链接: 分下面两步进行: ml /c /coff 3。
asm link /subsystem:Windows /libpath:d:masm7lib 3。obj 第一步编译生成3。
obj文件 /c 表示只编译,不链接 /coff 表示生成COFF格式的目标文件 第二步链接生成3。 exe文件 /subsystem:windows 表示生成Windows文件 /libpath:d:masm7lib 表示引入库的路径为:d:masm7lib。
在安装Masm32后,引入库位于Masm32Lib目录下。 也可设置环境变量Lib的值:在dos提示符下键入Set Lib=d:masm7lib,这样“链接”就可简单写成: link /subsystem:Windows 3。
obj,试想一下,在程序调试过程中,修改源程序是常用的事啦,每次编译链接都要带/libpath:。 。
那该有多烦人呢。
当然,我们也可在源程序中直接给出引入库的位置,这样,链接时就方便啦,如下: includelib d:masm7libkernel32。lib includelib d:masm7libuser32。
lib--------------------------------------------------执行:在dos提示符下键入3,回车,出现一个消息框,哈哈,真正的Win32程序!--------------------------------------------------深入分析: 看一下源程序,有这么两行:call messageboxacall exitprocess。 大家一看都知道,这是子程序调用,但是我们并没写这样的子程序,事实上,这些是API函数。
作为函数,我们在调用时可能需要传送给函数一些参数,程序怎么知道传送的参数有哪些,类型是什么呢?就是通过函数原型定义,如下所示: ExitProcess PROTO :Dword MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:Dword 可以看出,ExitProcess有一个参数,MessageBoxA有四个参数,这些参数都是Dword类型。 在Win32中,参数的传递都是通过堆栈来完成的。
象MessageBoxA这个函数有四个参数,究竟是左边的先压入堆栈还是右边的先入栈呢?。model flat,stdcall给出了答案。
stdcall 指定参数是从右到左压入堆栈的,且调整堆栈是在子程序返回时完成的。 在源程序中不需要用“add sp,值”来保持堆栈平衡。
对MessageBox,在API手册中是这样定义的: int MessageBox( HWND hWnd, // handle of owner window LPCTSTR lpText, // address of text in message box LPCTSTR lpCaption, // address of title of message box UINT uType &n您正在看的汇编语言是:hello,world!win32汇编小程序。 bsp; // style of message box ) ;所以会有我们的程序段: push MB_OK lea eax,szCaption push eax lea eax,szText push eax push NULL call messageboxa 看看上面的程序,不难想到,假如在写程序时,少往堆栈里压入一个数据,那将是一个致命的错误。
能不能将这种检查参数个数是否匹配的工作交给计算机来完成呢?这是可以的,INVOKE指令可以帮助我们完成这样的工作。假如你的参数个数不正确,连接器将给出错误提示。
所以,极力建议你使用invoke代替call来调用子程序,当然,这不是绝对的。使用invoke上面的指令就可简写成下面的样子,看起来简炼多啦,查错也方便啦! invoke messageboxa, NULL,addr szText,addr szCaption,MB_OK 另外,像NULL,MB_OK都是一些常量,这样的常量有很多,还有很多的结构,如果在我们的程序中一开始都写这么多的东西,可能一下子就把你吓怕啦,也容易出错,更不便于看程序的主要部分。
hutch整理的Windows。inc包含了WIN32编程所需要的常量和结构体的定义,我们可简单的用一个include指令将这些常量和结构的定义插入到我们的文件中: include d:masm32includeWindows。
inc 但是Windows。inc中并不包含函数原型的声明,还要从其他的头文件中得到函数原型的声明,比如:messageboxa的原型声明在user32。
inc文件中,exitprocess在kernel32。 inc文件中。
这些头文件都放在 masm32include文件夹下。 还有,要用Windows。
inc,必须使用option casemap:none,它的意思是告诉 MASM 要区分符号的大小写,譬如:start和START是不一样的。 否则,一个小小的程序,可能会出成百上千的错误呀! 其他的,就不再细说啦,到此,上面的程序可重新修改如下:-----------------------------------------------------------------;最终的结果 。
386 ;表示要用到386指令 。model flat,stdcall ;32位程序,要用flat啦!;stadcall,标准调用 option casemap:none ;区别大小写include Windows。
inc ;包括常量及结构定义include kernel32。inc ;函数原型声明include user32。
incincludelib kernel32。lib ;用到的引入库includelib user32。
lib 。data;数据。
4.,HelloWorld的小程序,我是学java新手,HelloW
Java 不是编译型的语言,它是半编译半解释的,用 JDK 只能编译成 Class 文件,再由 JVM 解释。
所以不能编译成 EXE。 但是有一些 Java 的编译器,比如 JBuilder 之类的,也可以支持它的编译。
由于编译后的 EXE 依赖于某个平台,而由不同平台的 JVM 解释的 Class 文件可以跨平台,所以如果你将 Java 编译成 EXE 以后,就决定了它依赖于 Windows,而不能移植。 Java 的可移植性就无法体现了。
如果你真的想编译成 EXE,建议使用 JBuilder,而不是单纯的 Sun JDK。
5.编写一个输出HelloWorld的小应用程序
那就是一个Applet程序了.import java.awt.Graphics;import javax.swing.JApplet;public class HelloWorld extends JApplet{ public void paint(Graphics g) { g.clearRect(0,0,getWidth(),getHeight());//清楚背景 g.drawString("HelloWorld",70,80);//在指定位置输出"HelloWorld" }}在网页中你就可以插入一个applet,标记如下
。6.编写一个输出HelloWorld的小应用程序
那就是一个Applet程序了.
import java.awt.Graphics;
import javax.swing.JApplet;
public class HelloWorld extends JApplet
{
public void paint(Graphics g)
{
g.clearRect(0,0,getWidth(),getHeight());//清楚背景
g.drawString("HelloWorld",70,80);//在指定位置输出"HelloWorld"
}
}
在网页中你就可以插入一个applet,标记如下
<body>
<applet code="HelloWorld.class" width=200,height=50>
</applet>
</body>
转载请注明出处51数据库 » 微信小程序helloword