第五章汇编语言程序结构 PARAMETER_TABLE PAR的偏移地址 PAR2的偏移地址 PAR3的偏移地址 INTERSEG_DATA }DATA的偏移地址 DATA1的段地址 DATA2的偏移地址 DATA2的段地址
第五章第一章汇编语言程序结构 基础知识
第五章汇编语言程序结 顺便说明一下,这里操作数字段中的变量或标号可以使用表达式如: Variable+constant expression label_+ constant expression 在这种情况下,汇编后,存储器中应该存入表达式的值 例如 PARAMETER TABLE DW PARI+1 DW PAR2+1 说明变量的类型属性问题: 在数据定义伪操作前面的变量的值是该伪操作中的第一个数据项在当前 段内的第一个字节的偏移地址。此外,它还有一个类型属性用来表示该语句 中的每一个数据项的长度(以字节为单位表示),因此DB伪操作的类型属性为1, DW为2,DD为4,DQ为8,DT则为10,变量表达式的属性和变量是相同的。 汇编程序可以用这种隐含的类型属性来确定某些指令是字指令还是字节 指令
第五章第一章汇编语言程序结构 基础知识 顺便说明一下,这里操作数字段中的变量或标号可以使用表达式如 : 在这种情况下,汇编后,存储器中应该存入表达式的值。 例如 PARAMETER_TABLE DW PAR1+1 DW PAR2+1 说明变量的类型属性问题: 在数据定义伪操作前面的变量的值是该伪操作中的第一个数据项在当前 段内的第一个字节的偏移地址。此外,它还有一个类型属性用来表示该语句 中的每一个数据项的长度(以字节为单位表示),因此DB伪操作的类型属性为1, DW为2,DD为4,DQ为8,DT则为10,变量表达式的属性和变量是相同的。 汇编程序可以用这种隐含的类型属性来确定某些指令是字指令还是字节 指令
第五章汇编语言程序结构 例如 OPERI DB?,? OPeR2 Dw ?, 则第一条指令应为字节指令,第 二条指令则应为字指令。 MOV OPER1. 0 MOv OPER2. 0 如果有下列指令序列: 汇编程序在汇编这一段程序时,能发 OPERI DB 1, 2 现两条MOV指令的两个操作数的类型属 OPER2DW1234H,2345H性是不相同的: OPERI十1为字节类型属性而AX为字 类型属性; MOV AX, OPERI+1 OPER2为字类型属性而AL为字节类 MOV AL, OPER2 型属性。 汇编语言将指示由于属性类型不匹配出错
第五章第一章汇编语言程序结构 基础知识 例如 OPER1 DB ?,? OPER2 DW ?,? … MOV OPER1, 0 MOV OPER2, 0 则第一条指令应为字节指令,第 二条指令则应为字指令。 如果有下列指令序列: OPER1 DB 1,2 OPER2 DW 1234H,2345H … MOV AX ,OPER1+1 MOV AL ,OPER2 汇编程序在汇编这一段程序时,能发 现两条MOV指令的两个操作数的类型属 性是不相同的: OPERl十1为字节类型属性而AX为字 类型属性; OPER2为字类型属性而AL为字节类 型属性。 汇编语言将指示由于属性类型不匹配出错
第五章汇编语言程序结构 有一个办法可以指定操作数的类型属性, 它优先于隐含的类型属性,即可以使用 PTR属性操作符。其格式为 type PTR Varible士 constant expression通过PTR属性操作符就把OPER1+1 其中类型可以是BYTE,WORD或的类型属性指定为字,两个操作数 DWORD(双字),这样变量的类型就可以的属性就一致了,汇编时不会出错 指定了。上面例子可以写为: 而运行时应把OPER1十1的字内容送 到AX,即把OPER1十1的内容送AL OPERI DB 1, 2 把OPER2的第一个字节的内容运AH, OPER2 DW 1234H, 2345H 所以指令执行完后,(AX)=3402H。 同样,对于第二条语句(AL)=34H MOV AX, WORD PTR OPERI+1 MOV AL, BYTE PTR OPER2
第五章第一章汇编语言程序结构 基础知识 有一个办法可以指定操作数的类型属性, 它优先于隐含的类型属性,即可以使用 PTR属性操作符。其格式为: type PTR Varible士constant expression 其 中 类 型 可 以 是 BYTE , WORD 或 DWORD(双字),这样变量的类型就可以 指定了。上面例子可以写为: OPER1 DB 1,2 OPER2 DW 1234H,2345H … MOV AX ,WORD PTR OPER1+1 MOV AL ,BYTE PTR OPER2 通过PTR属性操作符就把OPER1十1 的类型属性指定为字,两个操作数 的属性就一致了,汇编时不会出错, 而运行时应把OPER1十1的字内容送 到AX,即把OPER1十1的内容送AL, 把OPER2的第一个字节的内容运AH, 所以指令执行完后,(AX)=3402H。 同样,对于第二条语句(AL)=34H
第五章汇编语言程序结构 LABEL伪操作: 除了用属性操作符给以定义外,还可以用 LABEL伪操作来定义,其格式为: name LABEL type (1)对于数据项可以表示为: variable name LaBEL type 其中,type可以是BYTE,wORD或 DWORD(双字)。 (2)对于可执行的代码,则可表示为 label name LaBEl type 其中,type可以是NEAR或FAR
第五章第一章汇编语言程序结构 基础知识 LABEL伪操作 : 除了用属性操作符给以定义外,还可以用LABEL伪操作来定义,其格式为: name LABEL type (1) 对于数据项可以表示为: variable_name LABEL type 其中,type可以是BYTE,WORD或DWORD(双字)。 ( 2)对于可执行的代码,则可表示为 label_name LABEL type 其中,type可以是NEAR或FAR