导航:首页 > 编程语言 > 汇编程序入口为指令是什么

汇编程序入口为指令是什么

发布时间:2022-11-15 05:41:23

‘壹’ vs反汇编函数入口处指令

这个很简单ebp-0c0h是给出一段深度为0c0h堆栈,留给你的函数存变量。
因为第一条指令前还有一条指令mov ebp esp所以从ebp到esp是一个深度为0c0h的堆栈,可以想想下esp想当于地面
现在你朝地下挖了个深度为0c0h的洞,ebp现在就是洞底。
然后,rep stos是重复指令,重复次数是 30h 次,表示每次都向那个洞里放0cccccccch,
0ccccccch是4个字节,放30次,刚好等于第一句指定的堆栈的深度(16进制 30h*4=0c0h,有不理解打开windows
计算器算下)
所以余下三句的意思就是你把那个洞里全放成了0cccc cccch
为什么要放0ccccccch?
0cccccccch是个机器指令,是个中断指令。因为堆栈是存变量的,不可能被执行,所以一旦万一发生错误使堆栈被执行,那也只能执行个中断
被断了下来。
《天书夜读从汇编到windows内核编程》第一章有详细说明,有什么不理解你再去参考下吧

‘贰’ 汇编 radasm win32程序 怎么指定程序入口地址

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

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

[Enviroment]
1=path,c:masm32in;

[CharTab]
2=0251222522222232;20-2F
3=1111111111242221;30-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. END伪指令。

    格式为END <程序入口标号>

  2. .STARTUP伪指令。(注意前面有个点)

    程序将从此处开始执行,无需在END伪指令中指定。


‘肆’ 汇编 dw 在程序 入口前面,是不是说dw 命令就不执行 程序入口到底是什么意思

汇编语言中,DW 是伪指令,它在作用是:往存储器中存放数据。
比如,LED汉字显示屏,显示汉字的大量点阵数据,就可以用 DW 来存放。
这样的点阵数据,是不应该当做程序来执行的,程序的入口,就不应该是 DW 所在的地方。

但是,也有高手,用 DW 指令,向存储器中,存放指令的机器码。
这样的机器码,是可以当做程序来执行的,程序的入口,就可以是 DW 所在的地方。

‘伍’ 如何说明汇编程序的入口

汇编语言的注释是每行从分号“;”开始的,分号之后的内容都属于注释。一般而言,汇编语言的注释在以下几个地方:
1、程序的最前面,注释内容一般说明该程序总的说明,解释程序的主要功能,程序的版本号,程序的修改日志,程序的编制人等等
2、子程序的前面,一般说明该子程序或函数完成的功能,输入参数,输出参数,影响的标志位等等。
3、指令行的后面,注释该行语句的功能。
比如以下简单程序的注释。
;--------------------------------------
;该程序完成一个LED灯的闪烁
;编制时间:XXXXX
;完成人:XXXX
;--------------------------------------
ORG 0000H

LJMP MAIN:
ORG 0030H
MAIN:
CLR P1.0 ;led置低

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

‘陆’ 汇编语言指令大全,要详细的 !!!!

一、数据位传送指令:

1、MOV C, bit ;bit 可直接寻址位 C←(bit)

2、MOV bit,C ;C 进位位 (bit) ← C

二、位变量修改指令:

1、CLR C ; 将C=0

2、CLR bit

3、CPL C ; 将C求反再存入C

4、CPL bit ; 将bit求反再存入bit

5、SETB C ; 将C=1

6、SETB bit ; (bit) ← 1

三、位变量逻辑指令:


ANL C, bit ANL C, bit ORL C, bit ORL C, bit

‘柒’ 汇编语言 ENTRY 是什么指令

在ARM汇编中,ENTRY 是一个伪指令,用于指定汇编程序的入口点。在一个较大型的完整的汇编程序(多个源文件组成的工程)中至少要有一个ENTRY(也可以有多个,当有多个ENTRY时,程序的真正入口点由链接器指定),但在某一个源文件里最多只能有一个ENTRY(可以没有)。

‘捌’ 51单片机汇编程序入口后加的跳转指令"LJMP"是因为什么 如:ORG 0 LJMP STAR ORG 0003H LJMP INT0S

要弄明白这个问题,你要对51单片机的中断有一个初步的了解,我可以给你介绍一下。
比方说你希望不管程序运行到哪里,只要你一按某个按键,就执行一段你预先写好的程序,然后再回到原来的地方继续。你按按键的动作可以视为单片机的一个I/O管脚电平由高到低(如果你把按键接在I/O和地之间)。在51单片机中,有两个I/O可以实现这样的功能(这就是外中断,ORG
0003H
LJMP
INT0S
中的INT0S就是外中断0,具体你可以查51单片机中断系统的资料)。
那它到底是怎样实现的呢?比方说,某一时刻,你的按键按下了,处理器会知道满足了外中断的触发条件,那它会执行哪一段程序呢?设计师人为地给它规定了一个固定的地址,如外中断0被触发时就是跳到地址为0003H的单元开始执行,别的中断(定时器等)同理,都有一个固定的地址,一旦被触发就会自动跳到那个地址,这就是中断向量。
那为什么是0003H而不是程序存储器的末尾呢?这是因为不同51单片机的存储器大小是不同的,如果中断向量也因此而不同的话,单片机开发的麻烦就太多了。所以设计师干脆就把中断向量放在开头。单片机复位后是从0000H开始执行的,总不能让它一开始就无缘无故中断,所以要转移到一个和中断向量不相干的地方执行主程序。ORG
0
LJMP
STAR(其实应该是START)就是这样一个转移指令,转到标记为START的主程序处开始执行。一条LJMP指令的长度为3,这也就是第一个中断向量为0003H的原因了(不浪费一丝空间,不得不佩服Intel设计师的高明)。
ORG
0003H
LJMP
INT0S
为什么中断向量处还要跳转呢?这是因为中断向量间的空间也很有限,只能完成一些最简单的任务,稍微长一点的程序就需要放在更大的空间里,从中断向量处跳转到该处执行真正的中断服务程序。
有关中断系统的具体内容,建议你还是看看相关资料,我只是把它的基本原理和你讲了一下,真正使用还是请你自己探索。

‘玖’ jne的汇编指令是什么

汇编指令是汇编语言中使用的一些操作符和助记符,还包括一些伪指令(如assume,end)。用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。

jne是汇编指令中的一个条件转移指令。当ZF=0,转至标号处执行。

阅读全文

与汇编程序入口为指令是什么相关的资料

热点内容
液压油可压缩吗 浏览:944
源泉cad加密文件 浏览:125
银河v10驱动重编译 浏览:889
电脑上文件夹右击就会崩溃 浏览:689
右美维持算法 浏览:938
php基础编程教程pdf 浏览:219
穿越之命令与征服将军 浏览:351
android广播重复 浏览:832
像阿里云一样的服务器 浏览:318
水冷空调有压缩机吗 浏览:478
访问日本服务器可以做什么 浏览:434
bytejava详解 浏览:450
androidjava7 浏览:386
服务器在山洞里为什么还有油 浏览:887
天天基金app在哪里下载 浏览:976
服务器软路由怎么做 浏览:293
冰箱压缩机出口 浏览:229
OPT最佳页面置换算法 浏览:645
网盘忘记解压码怎么办 浏览:853
文件加密看不到里面的内容 浏览:654