预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共26页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第6章汇编语言及程序设计初步6.1汇编语言语句 6.1.1语句的种类及格式 1、语句的种类2、语句的格式 指令语句的格式: [标号:]指令助记符[操作数1][,操作数2][;注释] 伪指令语句的格式: [名字]伪指令定义[参数1,…,参数n][;注释] 6.1.2数值表达式 1、常量 (1)数值常量:MOVAX,1F00hMOVCX,[BX+20] (2)字符常量:MOVAL,’a’CMPBX,’ab’2、数值表达式 (1)算术运算 MOVAX,100*4+7 (2)关系运算 MOVAX,1234GT1024等效:MOVAX,0FFFFh 关系运算符有:GT—大于、LT—小于、NE—等于 EQ—等于、LE—小于等于、GE—大于等于 在关系运算时,关系成立返回值FFFF,否则返回0。 (3)逻辑运算 MOVAX,1024AND0FFh ANDBX,3AND47h6.1.3地址表达式 地址表达式是指由寄存器间址、变量、地址常量组成的表达式,如:VAR[BX+DI]或VAR[BX][DI]等。 6.2变量和标号 6.2.1数据定义语句 1、数据的定义 在汇编语言中使用的所有数据都必须预先使用数据定义语为不同的数据定义一个变量(数据存放地址的符号描述)。其格式如下: [变量名]数据定义符[参数1][,参数2]…….. 数据定义符有:DB(字节)、DW(字)、DD(双字)、DQ(8字节)、DT(10字节)。(1)数值数据的定义 X1DB10,0FFh X2DW0,0A30h,1F22h X3DD12345678h,3Fh (2)字符数据的定义 字符或字符串的定义通常采用DB伪指令定义,如: BUFDB‘ABCD1234$’,0Ah,0Dh MESSGDB‘Howareyou!’ 在BUF的首地址单元存放了9个字节的数据,它们是这些字符的ASCII码值。(3)?数据 在定义数据时,有时使用?,如: X1DB? 表示定义一个字节的未知数据,起始地址表示为X1。 2、重复操作符DUP 如:BUFDB100DUP(0) 表示在BUF为首址的存储单元存放了100个字节的数据0。 DUP内可以是表达式,也可以是DUP嵌套,如: DATA1DB100DUP(’ABCD’) BUFFERDW1,5DUP(1,2,4DUP(0))3、参数为变量名 如:BUFDB‘ABCD’ ADDR1DWBUF ADDR2DDBUF 假定BUF的偏移为0220h,段值为2F00h,则以上3个变量的存储示意图如右所示:2、属性分离符 (1)SEG段属性分离符 MOVAX,SEGBUF;BUF为定义的字变量 将BUF的段值传送到AX寄存器(立即寻址) (2)OFFSET偏移属性分离符 MOVAX,OFFSETBUF 将BUF的偏移属性送AX寄存器(立即寻址),等效于: LEAAX,BUF 传送变量的偏移属性,可以使用地址表达式,如: MOVAX,OFFSETBUF+1 该指令的意图是将BUF的偏移地址值加1后送AX寄存器。(3)TYPE类型值返回 如:MOVAX,TYPEBUF;BUF为字节变量。 该指令等效于:MOVAX,1;各类型返回值如下表:6.3汇编语言程序的组织 6.3.1汇编语言段的定义 1、段的定义 格式:段名SEGMENT[定位类型][组合类型][‘别名’] (段的内容:如数据段定义数据,代码段书写 代码等) 段名ENDS 其中: (1)定位类型:指段起始地址值的要求,有如下关键字: PARA(默认):低4位为0;WORD:最低位为0 BYTE:无要求;PAGE:低8位为0(2)组合方式:指相同性质的段以何种方式组合。 其中关键字STACK表示定义的是堆栈段。 (3)别名:段的别名 2、段指定语句 格式:ASSUME[段寄存器名:段名][,段寄存器名:段名] ASSUME出现在代码段,可以在程序开始之前或其它位置说明段。如: ASSUMECS:CODE,DS:DATA 3、汇编地址指定伪语句 (1)$取当前地址 如,在数据段有如下定义: BUFDB‘ABCDEFG1234asdf$’ XEQU$-BUF;X表示BUF的长度。(2)ORG指定偏移 如,在数据段有如下定义: DATASEGMENT BUF1DB‘ABCD1234’ ORG200 BUF2DW0,1234h DATAENDS 变量BUF2的偏移地址为200。 4、其它伪指令 (1)EQU/=等价语句 类似C语言中的宏定义,如: X=100或OPRD1EQUBYTEPTRBUF(2)LABEL语句(等效EQUTHIS) 6.3.2汇编语言的结构程序中START是程序的入口地址的符号描述,汇编规定必须有开始标号,并在程序结束时,用ENDSTART说明,当然标号START可以取其它符号。 指令:M