完整段定义格式的伪指令
1、完整段定义伪指令
完整段定义由SEGMENT和ENDS这一对伪指令实现,格式如下:
段名 segment [定位类型] [组合类型] [段字/寻址方式] ['类别']
。。。。。
段名 ends
段定义后的4个关键字由来确定段的各种属性,堆栈段要使用stack组合类型,代码段应具有‘code’类别,其他为可选性参数。
(1)定位类型(align)——指定逻辑段在主存储器中的边界,该关键字可为:
BYTE:段开始为下一个可用的字节地址(xxxx xxxxB),属性值为1
WORD:段开始为下一个可用的偶数地址(xxxx xxx0B...
- [游客] 补充一下,还有可能在数据段中定义数组时超过了一个段长 07/22 16:20
- [infosecer] 受教了 07/17 00:16
- [游客] 顶一下。 05/06 19:00
- [maxm] 收藏了先 02/17 15:50
- [jcw2008] 谢谢,这对我很有用! 10/21 11:05
- [ding2843] 好文章。。。。。。。。。。。。。。。。。 07/01 16:39
- [ding2843] 好文章。。。。。。。。 07/01 16:22
- [starrynight] 一笑而过 管自己的水,让别人喝去吧 06/27 13:25
- [游客] "别理他"那可不行,不能让不实之言,任意泛滥。 知情人应该发言,不要让“谣言”有成长的空间。 06/27 12:55
- [yjll] 顶! 06/26 13:31
- [lonely200808] 你好!我的汇编语言的初学者,在论坛里看到你发言,想和你交个朋友,因为我才开始自学,要自考,有没有QQ 03/26 17:19
- [gecko] 接触到汇编语言是一年后的事情了。才知到有一种语言更低级。 这话有双关语的感觉..哈哈 11/21 19:42
- [lbhn] 我已修改了,这东西不注意还真不好找*-* 10/18 16:04
- [lbhn] 多谢了,对了问一下你的照片是怎么上传的?为什么我现在连自己的资料都不能修改了? 10/17 18:28
- [lbhn] 我第二天又做了一遍这次没出错,可能是V86运行程序不是很稳定,多谢你关注啊!! 10/15 16:22
- [lbhn] 你是在纯DOS下还是ms-dos窗口下?是自已的机子吗? 我这是在网吧里做的!! 10/13 13:50
[2007-10-29 16:43] 【转贴】汇编伪指令四
阅读全文 |
评论次数(0) |
浏览次数(849) |
所属类型(汇编自留地)
[2007-10-29 16:41] 【转贴】汇编伪指令三
程序段的定义和属性
一、DOS的程序结构
DOS操作系统的两种可执行程序是EXE和COM
1、EXE程序
EXE程序可以有独立的代码、数据和堆栈段,还可以有多个代码段和多个数据段,程序长度可以超过64KB,执行起始地址可以任意指定。规则的EXE文件在磁盘上由两部分组成:文件头和装入模块。装入模块就是程序本身。文件头则是由连接程序生成,包含有文件的控制信息和重定位信息,供DOS装入EXE文件时使用。实际上大EXE文件还可能包含一个附加部分,此部分由开发者用连接程序以外的工具附加到程序末尾,不属于装入模块,也不直接装入主存,仅供程序本身使用。当DOS装入或执行一个程序时,DOS确定当时主存...
一、DOS的程序结构
DOS操作系统的两种可执行程序是EXE和COM
1、EXE程序
EXE程序可以有独立的代码、数据和堆栈段,还可以有多个代码段和多个数据段,程序长度可以超过64KB,执行起始地址可以任意指定。规则的EXE文件在磁盘上由两部分组成:文件头和装入模块。装入模块就是程序本身。文件头则是由连接程序生成,包含有文件的控制信息和重定位信息,供DOS装入EXE文件时使用。实际上大EXE文件还可能包含一个附加部分,此部分由开发者用连接程序以外的工具附加到程序末尾,不属于装入模块,也不直接装入主存,仅供程序本身使用。当DOS装入或执行一个程序时,DOS确定当时主存...
阅读全文 |
评论次数(2) |
浏览次数(949) |
所属类型(汇编自留地)
[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的无...
阅读全文 |
评论次数(1) |
浏览次数(962) |
所属类型(汇编自留地)
[2007-10-29 16:28] 【转贴】汇编伪指令一
相对于硬指令,伪指令完成诸如程序存储模式、主存变量、子程序、宏及段定义等一些不产生CPU动作的说明性工作,正确透彻的理解伪指令,对于理解汇编程序,程序结构,运行机制等至关重要。
一、参数、变量和标号
在源程序语句格式的4个组成部分中,参数是指令的操作对象,参数之间用逗号分隔。,汇编语言中,指令参数有数值型,它的主要形式是常数和数值表达式;还有地址型,主要形式是标号和名字(变量名、段名、过程名等)。我们知道,硬指令的参数有立即数、寄存器和存储单元,其中立即数要用数值型参数表达式,存储单元应该用地址型参数。
1、常数:表示一个固定的数值,分多种形式:
(1)十进制常数——0~9组成...
一、参数、变量和标号
在源程序语句格式的4个组成部分中,参数是指令的操作对象,参数之间用逗号分隔。,汇编语言中,指令参数有数值型,它的主要形式是常数和数值表达式;还有地址型,主要形式是标号和名字(变量名、段名、过程名等)。我们知道,硬指令的参数有立即数、寄存器和存储单元,其中立即数要用数值型参数表达式,存储单元应该用地址型参数。
1、常数:表示一个固定的数值,分多种形式:
(1)十进制常数——0~9组成...
阅读全文 |
评论次数(1) |
浏览次数(2144) |
所属类型(汇编自留地)
[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”定义了...
阅读全文 |
评论次数(8) |
浏览次数(2826) |
所属类型(汇编自留地)
[2007-10-16 16:08] C嵌套汇编语言
(1)在C语言中使用寄存器,需要注意的是,使用的寄存器格式为:_REG。而且,寄存器的名称要大写。例子如下:
/*实现两个数求和*/
short int add ( short int x, short int y){
_AX = x;
_BX = y;
_AX = _AX + _BX;
return (_AX) ;
}
main(){
printf("%d" , add(6 , 8));
getch();
}
(2)在C语言中使用汇编指令。格式为 “asm 汇编指令”,如“asm mov ax ,3”,例子如下:
...
/*实现两个数求和*/
short int add ( short int x, short int y){
_AX = x;
_BX = y;
_AX = _AX + _BX;
return (_AX) ;
}
main(){
printf("%d" , add(6 , 8));
getch();
}
(2)在C语言中使用汇编指令。格式为 “asm 汇编指令”,如“asm mov ax ,3”,例子如下:
...
阅读全文 |
评论次数(3) |
浏览次数(1066) |
所属类型(技术改变未来)
[2007-10-12 19:08] 汇编中的宏指令
宏指令能够在程序中扩展成代码,这对一些重复性比较高的代码段,能起到简化源程序的作用。
汇编中使用宏指令的过程如下:
1.定义。
宏指令的定义格式为:
宏指令名 macro [形参1,形参2...]
......
......(宏内容)
endm
2.宏指令的调用。
宏指令的调用格式:
宏指令名 [形参1,形参2....]
3.宏指令的展开。
在代码中,调用宏指令的地方,会在程序编译的时候根据给定参数自动替换成宏指令的内容。
需要注意一下几点:
(1)宏指令的参数可有可无。
(2)宏指令的定义必须在调用之前。...
汇编中使用宏指令的过程如下:
1.定义。
宏指令的定义格式为:
宏指令名 macro [形参1,形参2...]
......
......(宏内容)
endm
2.宏指令的调用。
宏指令的调用格式:
宏指令名 [形参1,形参2....]
3.宏指令的展开。
在代码中,调用宏指令的地方,会在程序编译的时候根据给定参数自动替换成宏指令的内容。
需要注意一下几点:
(1)宏指令的参数可有可无。
(2)宏指令的定义必须在调用之前。...
阅读全文 |
评论次数(7) |
浏览次数(2218) |
所属类型(技术改变未来)
[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,...
阅读全文 |
评论次数(2) |
浏览次数(1179) |
所属类型(技术改变未来)
[2007-10-06 16:07] 【汗】电脑终于能关机了!!
前段时间的一个早晨,突然发现电脑处于开机状态,很是纳闷,以为是自己关机的时候误按了重启按钮。可是,第二天还是如此,我一哥们说:你的电脑牛了,不肯关机,一直重启!“不会吧!”当时就感到不对劲了。立马实验了一把。果真,明明是按的关机,却是重新启动。这下可闹大了!先检查一下Bios,没问题。开始怀疑是电源的问题了。然后,试了试电源,长按后也能关机,电源的问题可能性也不大。那就是系统的问题了。从网上查了查,有的说是电源的问题,有的说是系统的问题,按照一些方法试了试,根本没有效果。只能自己的了。换系统当然是最容易做到的了。幸亏之前做过备份,做了一个还原。希望能够关机,要是电源的问题就麻烦了。我一边祈祷一...
阅读全文 |
评论次数(1) |
浏览次数(550) |
所属类型(技术改变未来)
[2007-09-14 16:02] assembly,nothing is impossible !
记得大学刚学C语言的情形,老师在讲台上磨磨唧唧的讲着指针,结构体,台下1/3兄弟姐妹趴在书桌上睡的不亦乐乎,1/3的人在谈笑风声,剩下的也都浑浑噩噩的,不知老师所云。我努力的想死死记住老师的每句话,但,可惜我的大脑不是电脑。编程,变得越来越难懂,编程语言越来越神秘。脑袋中都浮现除了天书奇谈中那个蛋生将N多天书字符吃进肚子的情形,多希望自己也能那样吃书啊。
都说C是最基础的编程知识,真不敢想,我们这些连C都不懂的能干啥。放弃还是坚持,谁也说不清。编程成了鸡肋!吃又吃不得,扔了又可惜。唉!不知道这个计算机专业能学个什么样子。难道就是为了学数学,物理,毛概,邓论之类,拿个证书么?那还不如报...
都说C是最基础的编程知识,真不敢想,我们这些连C都不懂的能干啥。放弃还是坚持,谁也说不清。编程成了鸡肋!吃又吃不得,扔了又可惜。唉!不知道这个计算机专业能学个什么样子。难道就是为了学数学,物理,毛概,邓论之类,拿个证书么?那还不如报...
阅读全文 |
评论次数(6) |
浏览次数(643) |
所属类型(技术改变未来)