伪指令及汇编语言源程序结构
时间:2025-04-03
时间:2025-04-03
伪指令及汇编语言源程序结构
复习提问:1、 XCHG和 XLAT 指令的区别。 2、ADD和ADC指令的区别。 3、请说出以下指令中源操作数的寻址方式。 1. MOV AL,[ 2000H ] 2. MOV AL,[ SI ] 3. MOV AL,[ BX+3 ] 4. MOV AL,[ SI +3 ] 5. MOV AL,[ BX+SI ] 6. MOV AL,[ BX+SI+3] 4、LEA BX,X 和 MOV BX,X的区别。 5、DAA和AAA指令什么时候使用? 6、ROL和RCL指令的区别。 8、AND 、OR、 XOR三条指令主要用在哪些场合?
伪指令及汇编语言源程序结构
第4章 伪指令及汇编语言源程序结构4.1 汇编程序结构4.2 汇编语言语句格式 4.3 伪指令语句 4.4 标号、变量和表达式 4.5 段的组织 4.6 程序段前缀
伪指令及汇编语言源程序结构
4.1 汇编程序结构1、可编程的寄存器组 (前已讲) 2、语法规则和语法要素 1)字符集: (1)字母 26个英文大小写字母; (2)数字 0~9; (3)特殊字符+ - × / ( ) [ ] < > ; ’ 。 ” _ : ? @ $ & 等 (4)定界符,空格符,制表符,回车符,换行符 2)标识符:用来定义段、变量、标号和常量等项目的名字。 (1)开头字符用字母或?,@,_。 (2)其余的字符可以是字母,数字或上面3个特殊字符,中 间不能有分隔符。 (3)标号和符号名都可由不超过 31 个的字符串组成。 (4)一个程序模块内的每一个标识符只代表一个项。
伪指令及汇编语言源程序结构
名字项不允许用汇编语言中有特定意义的关键字、保 留字,如指令助记符、伪指令、寄存器名和运算符, 如:MOV、ADD、DB、SEGMENT、EQ、OFFSET、 PTR、DUP都不能用作标号或符号名。 正确名字项: SBUF @123 LOOP1 错误的: DD 3MNK 0FFFFH
JNZATHIS_STREET
FIRST$123MOV-PREGAM
伪指令及汇编语言源程序结构
3)关键字和保留字:系统自已预定义的标识符。 关键字:指令助记符 例 :MOV 、ADD、 LOOP、 INT 保留字:伪指令或其他功能符号 例:DB、OFFSET、DUP、REP 4)语言符号和分隔符 语言符号:一条语句结束用换行符 定界符为 ,和 ; 标识符(用户自定义) 常量 关键字和保留字 分隔符: 空格
伪指令及汇编语言源程序结构
4.1.2 源程序框架结构一个以MASM为基础的汇编语言源程序的结构形式如下 例所示: NAME MAIN_PROGMODUL DATA SEGMENT ;定义数据段 ….. DATA ENDS STACK1 SEGMENT PARA STACK ' STACK' ; 定义堆栈段 …….. STACK1 ENDS CODE SEGMENT ;定义代码段 ASSUME CS∶CODE,SS∶STACK1,DS∶DATA,ES∶DATA START:MOV AX,DATA ; MOV DS,AX ;置DS和ES初值 MOV ES,AX …… MOV AH,4CH ;返回操作系统 INT 21H CODE ENDS END START
伪指令及汇编语言源程序结构
例4.2在屏幕上显示一行字符:“This is My First Program” 程序: NAME SIMPLE_EXAMPLEFIRST_DATA SEGMENT STRING_DA DB 'This is My First Program $';要显示的字符串 FIRST_DATA ENDS FIRST_STACK SEGMENT PARA STACK ' STACK' DB 100 DUP(?) FIRST_STACK END FIRST_CODE SEGMENTASSUME DS∶FIRST_DATA,SS∶FIRST_STACK,CS∶FIRST_CODE
START:MOV AX,FIRST_DATA MOV DS,AX ;装数据段地址 MOV DX,OFFSET STRING_DA MOV AH,09H ;显示字符
串 INT 21H ;DOS 9号功能调用 MOV AH,4CH ;返回DOS INT 21H FIRST_CODE ENDS END START
伪指令及汇编语言源程序结构
源程序结构中的每行语句的用法及含义是:1) NAME MAIN_PROGMODULE NAME是保留字,用于定义程序模块的名称, MAIN_MODULE是程序名称,用户可用任意一个标识符为程 序命名。
2) DATA SEGMENT (数据定义伪指令序列) DATA ENDSDATA是程序员命名的数据段名称。SEGMENT和ENDS是 保留字,SEGMENT与ENDS配对使用,ENDS前的DATA应与 SEGMENT取的DATA一致。其功能是定义每个段。 …
伪指令及汇编语言源程序结构
3) STACK SEGMENT (数据定义伪指令序列) STACK ENDS STACK是程序员命名的堆栈段名称。其功能是使用伪指令语 句定义堆栈段。 4) CODE SEGMENTASSUME CS:CODE,SS:STACK,DS:DATA,ES:DATA
…… CODE ENDS CODE是程序员命名的代码段名称,SEGMENT在这里定义 一个代码段。 5) ASSUME CS∶CODE,SS∶STACK,DS∶DATA,ES∶DATA ASSUME是保留字,指示段寄存器对应前面定义的哪个段。 CS∶CODE,SS∶STACK,DS∶DATA,ES∶DATA分别指出 CS、SS、DS和ES寄存器与CODE、STACK、DATA段对应。 …
…
伪指令及汇编语言源程序结构
6) START START是程序员定义的程序入口处的标号名。用冒号“:”说 明START是一个标号。 7) 程序部分 START:MOV AX,DATA MOV DS,AX MOV ES,AX (用户编写的程序段) MOV AH,4CH INT 21H 这里是程序员编写的程序。 8) CODE ENDS 这条语句指出所定义的CODE代码段到此结束。 9) END START END是保留字,指示整个程序模块到此结束。 …
伪指令及汇编语言源程序结构
汇编语言是以逻辑段为基础,按段的概念来组织
代码和数据。每个逻辑段由语句序列组成,各语句可 以是: 1) 指令语句——完成一定操作功能,能够翻
译成机器代码的语句,即为第3章介绍的指令所形成 的语句。指令语句对应于CPU指令系统中的一条指令, 因此为可执行语句。汇编时汇编成目标码。
伪指令及汇编语言源程序结构
2) 伪指令语句——CPU不执行的语句,只是为汇编程序在翻 译汇编语言源程序时提供有关信息,并不翻译成机器代码的语
句。因此,伪指令语句是协助汇编系统实现某种特定的操作,决定程序的数据段、堆栈段和代码段的组织。伪指令语句本身 并不完成任何机器指令的功能,但对汇编系统生成的所有操作 码是要产生影响的。如:在某程序中: 其功能 …… 此处隐藏:1823字,全部文档内容请下载后查看。喜欢就下载吧 ……