资源描述:
《《宏汇编初步》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七部分宏汇编初步AssemblyLanguageProgramming概要结构记录宏指令条件宏汇编结构结构:逻辑上相互关联的一组数据变量组合在一起模板或者模式。字段:包含数据的结构成员程序对一个结构的访问:整个结构作为一个整体进行单个的域注意:这和C/C++中的结构体相似结构的定义nameSTRUCfield-declarationsnameENDS其中,字段为组成结构的各个内部变量,和普通DB/DW等变量的声明是一样的结构的使用结构的使用涉及到三个步骤:1.定义结构2.声明所定义的结构变量3.程序对结构变量进行相关的操作例
2、:员工结构EmployeeSTRUCIdNumDB"000000000"LastNameDB30DUP(0)YearsDW0SalaryHistoryDW4DUP(0)EmployeeENDS例:坐标结构COORD结构定义了x,y坐标值COORDSTRUCTXDW?;offset00YDW?;offset02COORDENDS结构变量的声明结构变量名是用户自定义的名称变量名结构名<字段值表>在<...>中插入各个字段的值,以逗号间隔空<>保留结构的初始缺省值例如:.datapoint1COORD<5,10>point2COOR
3、D<>workerEmployee<>初始化使用DUP操作符初始化一个或者多个数组字段元素:empEmployee<,,,2DUP(2000)>结构数组结构对象的数组使用DUP初始化NumPoints=3AllPointsCOORDNumPointsDUP(<0,0>)CS_DeptEmployee20DUP(<>)accountingEmployee10DUP(<,,,4DUP(2000)>)结构变量的操作.dataworkerEmployee<>movAX,TYPEEmployee;49movAX,SIZEEmployee
4、;49movAX,SIZEworker;49movAX,TYPEEmployee.SalaryHistory;2movAX,LENGTHEmployee.SalaryHistory;4movAX,SIZEEmployee.SalaryHistory;8EmployeeSTRUC;bytesIdNumDB"000000000";9LastNameDB30DUP(0);30YearsDW0;2SalaryHistoryDW4DUP(0);8EmployeeENDS;49movdx,worker.Yearsmovworker.Sal
5、aryHistory,2000;firstsalarymovworker.SalaryHistory+4,3000;secondsalarymovdx,OFFSETworker.LastNamemovsi,OFFSETworkermovax,(EmployeePTR[si]).Yearsmovax,[si].Years;invalidoperand(ambiguous)例1:p164学生成绩的结构数组30名学生7门课程的平均成绩编写子程序完成各个学生的平均成绩计算记录记录的概念与定义记录的存储分配和初始化对记录的相关操作概念记
6、录和结构类似,但不同之处是以二进制数的位数bit为字段的基本单位。记录的定义格式记录名RECORD字段名:宽度,字段名:宽度,……其中宽度是所在字段的二进制数的位数分配空间的规则:记录的所有字段位数之和不超过16。不足8位,分配8位;大于8位,不足16位,分配16位。数据各位填充按右对齐进行。从第一个字段开始,依次对各个字段从高位到低位分配位数。举例REC1RECORDF1:4,F2:2,F3:6,F4:4REC2RECORDFE1:2,F2E:4,FE3:1,FE4:1REC3RECORDFF1:3,FF2:4,FF3:3,
7、FF4:3REC4RECORDFD1:3=100B,FD2:2=2,FD3:1=1其中表达式是设定的初值记录变量的声明格式记录变量名记录名<值列表>举例DA1REC1<0AH,3,25H,6>DA2REC2<1,8,0,1>DA3REC35DUP(<3,7,6,2>)DA4REC4<3,3,0>DA5REC4<,3>DA6REC410DUP(<>)记录的运算符宽度运算符WIDTH记录名或记录的字段名MOVAL,WIDTHF3MOVAL,WIDTHREC1移位值运算记录字段名作为操作数,表示该字段处于记录中的位置(0-15)MO
8、VBL,F1记录屏蔽运算MASK记录的字段名将所在记录的相应字段的各位设置为1,其他为0MOVAX,MASKF1对记录和字段的操作(1/2)对记录变量的操作MOVAX,DA1MOVBL,DA2MOVDA3+4,CX作为常数的记录操作数MOVAX,REC1<0BH,2,3AH,