程序段的定义和属性
一、DOS的程序结构
DOS操作系统的两种可执行程序是EXE和COM
1、EXE程序
EXE程序可以有独立的代码、数据和堆栈段,还可以有多个代码段和多个数据段,程序长度可以超过64KB,执行起始地址可以任意指定。规则的EXE文件在磁盘上由两部分组成:文件头和装入模块。装入模块就是程序本身。文件头则是由连接程序生成,包含有文件的控制信息和重定位信息,供DOS装入EXE文件时使用。实际上大EXE文件还可能包含一个附加部分,此部分由开发者用连接程序以外的工具附加到程序末尾,不属于装入模块,也不直接装入主存,仅供程序本身使用。当DOS装入或执行一个程序时,DOS确定当时主存...


[2007-10-29 16:41] 【转贴】汇编伪指令三
阅读全文 |
作者:fishboy |
评论次数(2) |
浏览次数(1003)
[2007-10-29 16:44] 【转贴】汇编伪指令五
类似于高级语言中用户自定义复合数据类型,MASM允许将若干个相关的单个变量作为一个组来进行整体数据定义,然后通过相应的结构预置语句得变量分配空间。
1、结构
结构(STRUCTURE)把各种不同类型的数据组织到一个数据机构中,便于某些变量的处理。
(1)结构类型的说明
结构名 STRUCT
....
结构名 ENDS
如:学生成绩结构
student struct
sid dw ?
sname db 'abcdefgh'
Math db 0
English db 0
student ends
结构类型中所含的变量,...
1、结构
结构(STRUCTURE)把各种不同类型的数据组织到一个数据机构中,便于某些变量的处理。
(1)结构类型的说明
结构名 STRUCT
....
结构名 ENDS
如:学生成绩结构
student struct
sid dw ?
sname db 'abcdefgh'
Math db 0
English db 0
student ends
结构类型中所含的变量,...
阅读全文 |
作者:fishboy |
评论次数(4) |
浏览次数(2236)
[2007-10-29 16:43] 【转贴】汇编伪指令四
完整段定义格式的伪指令
1、完整段定义伪指令
完整段定义由SEGMENT和ENDS这一对伪指令实现,格式如下:
段名 segment [定位类型] [组合类型] [段字/寻址方式] ['类别']
。。。。。
段名 ends
段定义后的4个关键字由来确定段的各种属性,堆栈段要使用stack组合类型,代码段应具有‘code’类别,其他为可选性参数。
(1)定位类型(align)——指定逻辑段在主存储器中的边界,该关键字可为:
BYTE:段开始为下一个可用的字节地址(xxxx xxxxB),属性值为1
WORD:段开始为下一个可用的偶数地址(xxxx xxx0B...
1、完整段定义伪指令
完整段定义由SEGMENT和ENDS这一对伪指令实现,格式如下:
段名 segment [定位类型] [组合类型] [段字/寻址方式] ['类别']
。。。。。
段名 ends
段定义后的4个关键字由来确定段的各种属性,堆栈段要使用stack组合类型,代码段应具有‘code’类别,其他为可选性参数。
(1)定位类型(align)——指定逻辑段在主存储器中的边界,该关键字可为:
BYTE:段开始为下一个可用的字节地址(xxxx xxxxB),属性值为1
WORD:段开始为下一个可用的偶数地址(xxxx xxx0B...
阅读全文 |
作者:fishboy |
评论次数(0) |
浏览次数(899)
[2007-10-29 16:32] 【转贴】汇编伪指令二
变量定义伪指令为变量申请固定查长度的存储空间,并可以同时将相应的存储单元初始化。
一、变量定义伪指令,格式如下:
变量名 伪指令 初值表
变量名为用户自定义标识符,表示初值表首元素的逻辑地址,即用这个符号表示地址,常称为符号地址。
初值表是用逗号分隔的参数,主要由数值常数、表达式或?、DUP组成,?代表初值不确定,即未付初值,重复初值可以用DUP进行定义。DUP格式:
重复次数 DUP (重复参数)
变量定义伪指令有DB/DW/DD/DF/DQ/DT
(1)、DB——定义字节单元伪指令,用于分配一个或多个字节单元,每个数据一定是字节量(Byte),可以是0~255的无...
一、变量定义伪指令,格式如下:
变量名 伪指令 初值表
变量名为用户自定义标识符,表示初值表首元素的逻辑地址,即用这个符号表示地址,常称为符号地址。
初值表是用逗号分隔的参数,主要由数值常数、表达式或?、DUP组成,?代表初值不确定,即未付初值,重复初值可以用DUP进行定义。DUP格式:
重复次数 DUP (重复参数)
变量定义伪指令有DB/DW/DD/DF/DQ/DT
(1)、DB——定义字节单元伪指令,用于分配一个或多个字节单元,每个数据一定是字节量(Byte),可以是0~255的无...
阅读全文 |
作者:fishboy |
评论次数(1) |
浏览次数(1012)
[2007-10-29 16:28] 【转贴】汇编伪指令一
相对于硬指令,伪指令完成诸如程序存储模式、主存变量、子程序、宏及段定义等一些不产生CPU动作的说明性工作,正确透彻的理解伪指令,对于理解汇编程序,程序结构,运行机制等至关重要。
一、参数、变量和标号
在源程序语句格式的4个组成部分中,参数是指令的操作对象,参数之间用逗号分隔。,汇编语言中,指令参数有数值型,它的主要形式是常数和数值表达式;还有地址型,主要形式是标号和名字(变量名、段名、过程名等)。我们知道,硬指令的参数有立即数、寄存器和存储单元,其中立即数要用数值型参数表达式,存储单元应该用地址型参数。
1、常数:表示一个固定的数值,分多种形式:
(1)十进制常数——0~9组成...
一、参数、变量和标号
在源程序语句格式的4个组成部分中,参数是指令的操作对象,参数之间用逗号分隔。,汇编语言中,指令参数有数值型,它的主要形式是常数和数值表达式;还有地址型,主要形式是标号和名字(变量名、段名、过程名等)。我们知道,硬指令的参数有立即数、寄存器和存储单元,其中立即数要用数值型参数表达式,存储单元应该用地址型参数。
1、常数:表示一个固定的数值,分多种形式:
(1)十进制常数——0~9组成...
阅读全文 |
作者:fishboy |
评论次数(1) |
浏览次数(2214)
[2007-10-12 12:28] 【转贴】汇编指令集合
在论坛中,看到好多人汇编代码中写到了自己以前没有遇到过的指令,看起来有点费劲,就查了一下,原来自己不知道的汇编指令还不少。转帖一下,与来者诸君共同学习。
1. 通用数据传送指令.
MOV 传送字或字节.
MOVSX 先符号扩展,再传送.
MOVZX 先零扩展,再传送.
PUSH 把字压入堆栈.
POP 把字弹出堆栈.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD 把EAX,ECX,...
1. 通用数据传送指令.
MOV 传送字或字节.
MOVSX 先符号扩展,再传送.
MOVZX 先零扩展,再传送.
PUSH 把字压入堆栈.
POP 把字弹出堆栈.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD 把EAX,ECX,...
阅读全文 |
作者:fishboy |
评论次数(2) |
浏览次数(1230)
[2007-10-18 10:19] 初学汇编易犯的N个错误
1.段的定义不完整:
定义一个段空间的格式为:
segName segment
....
segName ends
一般首行很少出错,但是,有时候段体内容多了,忘了段结束的 edns了。^_^
2.代码段的起始指令错误:
code segment
start:
mov ax ,1
s:
mov ax , 2
code ends
end s
在上面这段代码中,程序执行从标号s开始,因为在源代码的最后一行“end s”指明了代码开始的位置是s处,而不是start处。做过检测题的朋友们,应该还有印象吧。start只是个标号,没有之外的任何意思,反倒是“end”定义了...
定义一个段空间的格式为:
segName segment
....
segName ends
一般首行很少出错,但是,有时候段体内容多了,忘了段结束的 edns了。^_^
2.代码段的起始指令错误:
code segment
start:
mov ax ,1
s:
mov ax , 2
code ends
end s
在上面这段代码中,程序执行从标号s开始,因为在源代码的最后一行“end s”指明了代码开始的位置是s处,而不是start处。做过检测题的朋友们,应该还有印象吧。start只是个标号,没有之外的任何意思,反倒是“end”定义了...
阅读全文 |
作者:fishboy |
评论次数(8) |
浏览次数(2919)
[2007-12-14 17:09] 【汇编转帖】逻辑指令和移位指令
十进制调整指令
[逻辑指令]
一、逻辑运算
24、逻辑与 AND (logic and)
指令的汇编格式:AND dst,src
指令的基本功能:(dst)<-(dst)与(src)
指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:指令执行后 CF 和 OF 置零,AF无定义。
SF=1 指令执行后的结果为负数(符号位为1)
SF=0 指令执行后的结果为正数(符号位为0)
...
[逻辑指令]
一、逻辑运算
24、逻辑与 AND (logic and)
指令的汇编格式:AND dst,src
指令的基本功能:(dst)<-(dst)与(src)
指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:指令执行后 CF 和 OF 置零,AF无定义。
SF=1 指令执行后的结果为负数(符号位为1)
SF=0 指令执行后的结果为正数(符号位为0)
...
阅读全文 |
作者:fishboy |
评论次数(4) |
浏览次数(2657)
[2008-06-21 00:41] 第1章 学习笔记
1.CPU能直接识别并执行的指令称为机器指令。机器指令在形式上表现为二进制编码。而机器语言是机器指令的集合。
2.机器指令与CPU有着密切的关系。每一种微处理器(CPU),由于硬件设计和内部结构的不同,就需要用不同的电平脉冲(机器指令)来控制,使它工作。因此,通常CPU种类不同,对应的机器指令也就不同。
3.机器语言是用二进制编码的机器指令的集合及一组使用机器指令的规则。它是CPU能直接识别的唯一语言。只有用机器语言描述的程序,CPU才能直接执行。
4.汇编语言由汇编指令、伪指令及其它符号组成的。其中汇编指令是机器码的助记符,有相对应的机器码;而伪指令和其他符号没有对应的机器...
2.机器指令与CPU有着密切的关系。每一种微处理器(CPU),由于硬件设计和内部结构的不同,就需要用不同的电平脉冲(机器指令)来控制,使它工作。因此,通常CPU种类不同,对应的机器指令也就不同。
3.机器语言是用二进制编码的机器指令的集合及一组使用机器指令的规则。它是CPU能直接识别的唯一语言。只有用机器语言描述的程序,CPU才能直接执行。
4.汇编语言由汇编指令、伪指令及其它符号组成的。其中汇编指令是机器码的助记符,有相对应的机器码;而伪指令和其他符号没有对应的机器...
阅读全文 |
作者:duckgaga |
评论次数(9) |
浏览次数(2434)
页码数(1):
1