程序入口在哪

程序入口在哪,第1张

start、main等标号,只是程序设计尤其是汇编语言中习惯使用的标识符慧举,不是汇编语神旦言的规定。汇编语言中,程序的入口由伪指令END后面的标号来指定。

END 标号 这个标号指定程序的入口

例如,

END bubbling

补充回答:这个标号前瞎碧是要在代码段中明确定义的。如,

data segment

mydata db ?

data ends

code segment

assume cs:code,ds:data

bubbling:

.

.

.

mov ah,4ch

int 21h

code ends

end bubbling

前些天,看到这个标题,直接过了,因为这个好像根本不是问题,结果过了几天,看这个问题还没有结果,于是好奇,进来看看。

RadASM只是一个开发环境,具体使用什竖者么语言,你要有那个语言的编译和链接器,放在任何目录都可以,然后在对应那个语言的xxxx.ini中指定编译器和连接器的位置,如果是MASM宏汇编,那么需要在MASM.INI中指定,例如:

[Enviroment]

1=path,c:\masm32\bin

[CharTab]

2=025122252222223220-2F

3=111111111124222130-3F

[Open]

0="汇编源文件 (*.asm*.inc*.mac*.txt),*.asm*.inc*.mac*.txt"

1="资源文件 (*.rc),*.rc"

2="文本文件 (*.txt),*.txt"

3="所有文件 (*.*),*.*"

src="汇编文件 (*.asm),*.asm,asm"

hdr="头文件 (*.inc),*.inc,inc"

mod="模块 (*.asm*.mac),*.asm*.mac"

1=path 这个就是用来定义宏汇编编译器的地址,填上正确的地址即可。

至于汇编源程序,你完全可以如在DOS环境下使用的那样,例如:

.data

s1   db  '这里放数据‘,0

.code

entry proc

mov  eax, [eax].PEB.ImageBaseAddress

call  GetCurrAddr

mov hInstance[ebx], eax

......

entry endp

.data

s2  db '这里也放数据,当然也可以放到前面去。

.code

start:

  mov   dest, offset Mz

  mov   clenth, Len

invoke GetCurrentDirectory,nBufLen, addr szFName

  invoke lstrcat,addr szFName, addr myFName

invoke CreateFile,addr szFName,       pointer to name of the file

          GENERIC_WRITE or GENERIC_READ,access (read-write) mode

          null,                         share mode

          null,                         pointer to security attributes

          CREATE_ALWAYS,          轮羡      how to create

          FILE_ATTRIBUTE_NORMAL,        file attributes

          NULL

mov hFile, eax

  invoke WriteFile,hFile,dest,clenth,addr br,NULL

.if eax

    invoke lstrcpy,addr szFName,addr myFName1

    invoke lstrcat,addr szFName,addr szOpenOk

    invoke MessageBox,null,addr szFName,

            addr szCaption,MB_OK

  .else

    invoke MessageBox,NULL,addr szOpenEr,

            addr szCaption,MB_ICONERROR or MB_OK

  .endif

invoke CloseHandle,hFile

  xor eax, eax

 余桐薯 invoke ExitProcess,eax

end start

编译链接后,代码从 start开始执行,start 的级别比 entry 高,如果代码中有entry,同时有start,那么编译后,结果是start,而不是entry,准确的说法是结尾 end 后面根的启动地址名称,随便叫什么都可以,习惯上用 start。

这是我以前写书时写的一些演示代码,都是在RadASM中开发的,代码绝对都可以编译运行的,我在附件里给你发一个汇编源代码,你可以试着用RadASM来编译一下。

汇编语言的注释是每行从分号“;”开始的,分号之后的内容都属于注释。一般而言,汇编语凳丛言的注释在以下几个地方:

1、程序的最前面,注释内容一般说明该程序总的说明,解释程序的主要功能,程序的版本号,程大皮序的修改日志,程序的编制人等等

2、子程序的前面,一般说明该子程序或函数完成的功能,输入参数,输出参数,影响的滚粗差标志位等等。

3、指令行的后面,注释该行语句的功能。

比如以下简单程序的注释。

;--------------------------------------

;该程序完成一个LED灯的闪烁

;编制时间:XXXXX

;完成人:XXXX

;--------------------------------------

ORG 0000H

LJMP MAIN:

ORG 0030H

MAIN:

CLR P1.0led置低

LCALL DELAY延时

SETB P1.0 LED置高

LCALL DELAY延时

SJMP MAIN 转MAIN循环

------------------------------

延时子程序

输入参数:无

输入参数:无

------------------------------

DELAY:

MOV R2,#200

D1:

MOV R3,#250

DJNZ R3,$

DJNZ R2,D1

RET

END


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8275483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存