d过ta segment 定义拇段 例3-3 d40d(*) ;定义尔存储区及拇 ;数据段结 字符串传送 extra seginer止 定义附加畏 d(?) ;定义目的存储区 extra ;附加畏结 stack segment para stack stack ;定义畏 100a(0) ;堆栈长为1①0字竹 stack ;地栈畏结烹 gment ;定义代码段 pr 定义主过程开始 assume cs: code, ds: data, es: extra, ss: stack start ;程序执行的起始地址 ;为返面DoSm写的三条语句 s ax, ax ax. data ;用数拇段地址初始化DS段奇存器 nov ds, ax ax, extra ;用附加段地址初始化ES畏奇存器 mo es, ax ea si, stuffer ;尔字符串储区首址送SI寄存器 ;目的字符串存储区首址D礻器 ;设置才问标①DF0) mov ;字符串长度《寄在器 rep move ;传送字符串 ;返回DO main 中 ;±过程结水 ;代码畏结 d start ;乐程序结枣
例 3-3 字符串传送
33汇编语言语句格式与分类 汇编语言语句一般格式为 [标识符/语句标号]指令名[操作数序列][;注释] 标识符用来为变量、段及过程等命名 语句标号—标识符后加’:',提供转移地址 指令名指令可分为三类:机器指令、伪指令和宏指令 机器指令:指令系统中的指令,程序运行时由CPU执行 伪指令:汇编程序执行的操作,规定汇编程序如何按要求 进行汇编及分配内存 宏指令:由一系列指令或伪指令构成,汇编时展开成若千 条机器指令,用于提高编程效率。 (伪指令和宏指令由汇编程序在汇编期间处理) 操作数序列—可以是常量、变量、表达式、寄存器名或 标号等,用逗号隔开。 注释符——“;”后可给出语句注释,提高可读性和可理解性
3.3 汇编语言语句格式与分类 汇编语言语句一般格式为: [标识符/语句标号] 指令名 [操作数序列] [;注释] 标识符——用来为变量、段及过程等命名 语句标号——标识符后加 : ,提供转移地址 指令名——指令可分为三类:机器指令、伪指令和宏指令。 机器指令:指令系统中的指令,程序运行时由CPU执行; 伪指令:汇编程序执行的操作,规定汇编程序如何按要求 进行汇编及分配内存 。 宏指令:由一系列指令或伪指令构成,汇编时展开成若干 条机器指令,用于提高编程效率。 操作数序列——可以是常量、变量、表达式、寄存器名或 标号等,用逗号隔开。 (伪指令和宏指令由汇编程序在汇编期间处理 ) 注释符—— “; ”后可给出语句注释,提高可读性和可理解性
34常量、变量、标号、运算符和表达式 1)常量 00110110B389D4670B407H MOV AL.A 3.475E+5 Input a number' mov 用RADX伪指令改变默认进制,其格式为: RADIX n(n为默认进制的基数) 例如: RADIX16定义十六进制为默认的进制 (2)变量 段起点 变量名:存储单元的符号地址 变量值:存储单元中的数据 偏移量 变量的三种属性: 50 段值(SEG):变量所在段的起始地址 偏移量( OFFSET):段起点距离变量所在存储单 元位置的字节数 类型(TYPE):变量占用的字节数
3.4 常量、变量、标号、运算符和表达式 (1)常量 00110110B 389D 467O B407H 3.475E+5 'Input a number' (2)变量 变量名:存储单元的符号地址 变量值:存储单元中的数据 MOV AL, 'A' mov al, 'a' 变量的三种属性: 段值(SEG):变量所在段的起始地址 偏移量(OFFSET):段起点距离变量所在存储单 元位置的字节数 50 偏 移 量 段起点 类型(TYPE):变量占用的字节数 用.RADIX 伪指令改变默认进制,其格式为: .RADIX n ( n为默认进制的基数) 例如: .RADIX 16 定义十六进制为默认的进制
(3)标号 标号:存放指令的存储单元的符号地址,常用作转移地址。 CMP AX. BX INE NEXT NEXT: MOV AX. 0 标号的三种属性 段值(SEG):标号所在段的起始地址 偏移量( OFFSET):段起点距离标号所指存储单 元位置的字节数 类型(TYPE):NEAR,FAR NEAR:2字节转移地址(偏移地址)短指针(近指针)段内转移 FAR:4字节转移地址(段、偏移地址)长指针(远指针)段间转移
(3)标号 标号:存放指令的存储单元的符号地址,常用作转移地址。 NEAR :2字节转移地址 … CMP AX,BX JNE NEXT … NEXT: MOV AX,0 … 标号的三种属性: 段值(SEG):标号所在段的起始地址 偏移量(OFFSET):段起点距离标号所指存储单 元位置的字节数 类型(TYPE): NEAR , FAR (偏移地址) 短指针(近指针) 段内转移 FAR :4字节转移地址(段、偏移地址)长指针(远指针) 段间转移
(4)运算符和表达式 表达式:由汇编程序在汇编期间计算 写正确表达式的原则:表达式的值必须能够在汇编期间 确定地计算出来。 例如: Mov AX. BX+CNT LEA AX. BUF+3 运算符分四类 1)计算运算符 (1)算术运算符 MOV AL. 19 MOD 7 MOV AL. 5 同一段内两种有意义的地址运算 0两个单元地址相减:差是两个单元之间相距的字节数 ②一个单元地址加减一个常量 产生的新地址是该单元邻近单元的地址
1)计算运算符 (4)运算符和表达式 表达式:由汇编程序在汇编期间计算 写正确表达式的原则:表达式的值必须能够在汇编期间 确定地计算出来。 例如: MOV AX,BX+CNT LEA AX,BUF+3 运算符分四类: (1)算术运算符 MOV AL, 19 MOD 7 MOV AL, 5 同一段内两种有意义的地址运算: 两个单元地址相减: 一个单元地址加减一个常量: 差是两个单元之间相距的字节数 产生的新地址是该单元邻近单元的地址