《微型计算机技术与汇编语言程序设计:ch11-高级汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《微型计算机技术与汇编语言程序设计:ch11-高级汇编语言程序设计.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第7章高级汇编语言程序设计7. 1.结构结构的定义格式:结构名 STRUC 字段名 DB/DW/DD;字段定义 结构名 ENDS*结构定义是一种对存储形式的描述,并不真正分配存储空间,只是定义了一 种新的数据类型,类似定义了一个类(面向对象技术的思考方法)。类是结构的进 化。例:定义一个学生成绩结构STUDENTSTUDENTSTUDENTSTRUCNUM1DBNAME1 DBSEXIDBMATH1 DBC0MPU1 DBADDRESS 1 DB ENDS?;学号ABCDEFGHIJ ;姓名?;性别920 DUP(?);地址结构变量的定义格式:变量名结构名V字段初值表变量名结构名n DUP (
2、字段初值表)*定义了变量后才分配了存储空间,变量类似面对象技术中的一个实例。例:SISTUDENTS2STUDENTS3STUDENTS3STUDENT 30 DUP( );定义了含有3。个学生元素的结构数组。7.1.2 结构变量及字段的访问访问格式:变量名.字段名地址寄存器.字段名例1:MOV AL, S2.SEX1MOV AL, S2llMOV BX, OFFSET S2 ; LEA BX, S2MOV AL, BX.SEX1例2:自己看。7. 2.记录记录与结构相似,差别在于结构用于定义以字节为基本单位的信息,而记录 用于定义以二进制为基本单位的信息。C 中的 struct记录的定义格式
3、:记录名 RECORD字段名:宽度=表达式*所有字段宽度之和不能大于16,宽度大于8按16处理。例:STUF RECORD NO:8, SEX: 1 , MARRIAGE: 19 WORK:5, HELTH:1记录变量的定义及初始化格式:变量名记录名字段值表例:PP1STUF 记录的运算(1)记录或记录字段宽度运算符WIDTHMOV AX, WIDTHSTUFMOV DL, WIDTHSEX(2)记录屏蔽运算符MASK返回8位或16位,只对应记录段名为1,其它位为0.MOV AX, MASK SEX对记录及字段的访问用 MASK7. 3.宏汇编7.3.1 宏定义C 中的 inline格式:(1
4、)带参宏定义宏指令名 MACRO形参1,形参2, 宏体ENDM(2)无参宏定义宏指令名 MACRO宏体 ENDM 例: PRINT MACRO bufl LEA DX, bufl MOV AH, 9 INT 21H ENDM宏调用格式:宏指令名实参1,实参2,例如:对上面的宏定义的三种调用形式为:PRINT BUF1;PRINT BUF2! PRINT BUF37.7汇编语言与C连接Xxxasm.asm-xxxasm.objxxxc.cxxxc.objlink obj文件 生成exe文件。两种连接方法:C中插入asm (直接插入法);C调用asm.(模块连接法)#include extern
5、int maxx(int ,int);int main(int argc, char *argv) int x;_asm mov ah,l_asm int 21hx= maxx(8,9);printf(n%dn,x); _asm mov ah,l _asm int 21h)x= maxx(10,7); printf(%cT,x);(_asm mov ah,l_asm int 21hreturn 1;.MODEL LARGE.CODEpublic _maxx_maxx proc far push bp mov bp,sp mov ax,bp+6 cmp ax,bp+8 jge exitmov ax,bp+8exit:pop bp ret_maxx endp end