㈠ 请问汇编语言中的程序流的定义是什么
有3种:顺序结构,分支结构,循环结构
㈡ 计算机汇编语言的定义
汇编语言(Assembly Language)是面向机器的程序设计语言.
高级的汇编器如MASM, TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言编译器把汇编程序翻译成机器语言的过程称为汇编。
汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。
㈢ 一个完整的汇编程序至少需要定义一个段,即____段
一个完整的汇编程序至少需要定义一个段,即 代码 段.
[80x86汇编语言程序设计教程]有提及这句话:
"通常情况下,代码和数据分别在代码段和数据段中,但有时代码和数据可以合并在一个段中.一个完整的汇编语言源程序至少含有一个代码段,但一个汇编语言源程序模块却可以只有数据段.目前,我们总把数据段安排在程序的前面,把代码段安排在程序的后面,但不是非要这样安排."
㈣ 汇编语言 定义问题
DATAS SEGMENT
...
DATAS ENDS
这是定义一个数据段,是汇编语言的段定义伪指令。
因为cpu内存采用段管理机制对程序机构有影响,使得任何类型存储器的访问,都必然会有段的参与。
伪指令的格式如下:
段名 SEGMENT [对齐类型】【组合类型】【类别】
【段内语句序列】
段名 ENDS
汇编语言程序的段名可以是唯一的,也可以与其他段同名,如果同名,则后者被认为是前者的后续,他们属于同一个段!
【】里的可以根据需要选择,可以缺省
STRING DB 'PLEASE INPUTX',13,10,'$'
X1 DB 13,10,'1','$'
X2 DB 13,10,'2','$'
X3 DB 13,10,'3','$'
X4 DB 13,10,'4','$'
这段程序定义了一个字符串,长度为16字节,从低地址到高地址一次存放,高地址存放高字节,低地址存放低字节
㈤ 汇编程序的定义是什么
用汇编语言编写的叫做汇编语言源程序
而汇编程序是汇编语言源程序经过编译后的结果
㈥ 什么叫汇编程序
简单明确的定义: 就是将汇编语言源程序自动翻译成机器语言代码的可执行的目标程序
这个能自动翻译的程序就叫汇编程序。
是一个编程工具。
满意就选满意回答吧
㈦ 如何汇编语言定义变量
汇编语言定义变量的格式为 :【变量名】【变量类型】【数值列表】
其中,变量类型有DB,DW,DD等,分别表示变量占有的内存空间(依次为1,2,4个字节)
如:
A DB 1,2,3,4 就定义了名称为A的4个占1个字节的变量,分别是1,2,3,4(严格来说是0001,0010,0011,0100)保存在系统分配的内存空间中。
如果是A DW 1,2,3,4则保存的值为(00000001,00000010,00000011,00000100)
注意事项
由于汇编语言是面向机器的语言,没有对函数的定义,函数的实现是通过中断调用的,(一个代码段跳到另外一个代码段) 所以对全局变量和局部变量的体现是通过栈来实现的。
即:
全局变量保存在数据段中,即伪代码中声明的DATA SEGMENT,任何时刻都能调用。
而局部变量则保存在栈段中,是伪代码中声明的STACK SEGMENT,平时不调用,调用中断时把局部变量从栈里取出来。
㈧ 汇编程序的变量什么段定义
一般都是在数据段定义,因为这样方便维护,也很清晰
但如果你愿意,在栈段和代码段定义变量都是可以的
你可以试试在代码段用 db dw dd 定义几个变量
都是可以通过编译和访问的,【但没有人推荐你在代码段定义变量】
㈨ 汇编语言定义
汇编语言,直接解释成机器指令。一个机器对应的指令是不一样的,所以移植性不好,难理解,MASM
ADD, SUB 等指令
c语言相对于汇编语言是高级语言,最后还是要变成汇编语言,再变成机器指令。再任何机器都可以编译,执行,移植性好。
+相对于汇编的ADD
-相对于汇编的sub.
可读性也好
㈩ 汇编程序段中数据段的定义
DATASEGMENT
STR1DB'whatisyourname?',13,10,'$'
CNEQU$-STR1
STR2EQUSTR1+CN-5
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVDX,OFFSETSTR1
MOVAH,9
INT21H
MOVSI,OFFSETSTR1
MOVDI,OFFSETSTR2
MOVCX,CN
ADDSI,CN-1
ADDDI,CN-1
STD
REPMOVSB
MOVDX,OFFSETSTR2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
教材中有详细的介绍,请认真阅读,多复习。
es是附加数据段段地址,程序中是将数据段和附加数据段同段。
str1是21个字节。
cn和str2在这里都是常量。
数据段中只定义了存储区str1。(但又将str2当存储区使用,这种用法少见,不要学!)
============================================================
以上操作的问题,str2并未申请缓冲区,在执行时有越界的风险!
============================================================
以下是规范的程序:
DATASEGMENT
STR1DB'whatisyourname?',13,10,'$'
CNEQU$-STR1
STR2DBCNDUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
LEADX,STR1
MOVAH,9
INT21H
LEASI,STR1
LEADI,STR2
MOVCX,CN
ADDSI,CN-1
ADDDI,CN-1
STD
REPMOVSB
LEADX,STR2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART