第四章宏汇编语言程序设计_第1页
第四章宏汇编语言程序设计_第2页
第四章宏汇编语言程序设计_第3页
第四章宏汇编语言程序设计_第4页
第四章宏汇编语言程序设计_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章宏汇编语言程序设计第1页,课件共54页,创作于2023年2月本章内容汇编语言程序格式MASM中的表达式伪指令语句DOS系统功能调用BIOS中断调用第2页,课件共54页,创作于2023年2月概述汇编语言利用指令的助记符、符号地址、标号来编写的语句汇编语言源原程序用汇编语言编写的程序汇编程序连接程序汇编语言源程序目标程序可执行程序第3页,课件共54页,创作于2023年2月一个例子程序Page124,例4-1程序由段的描述组成指令语句/伪指令语句构成第4页,课件共54页,创作于2023年2月§4-1汇编语言程序格式指令性语句伪指令语句数据项第5页,课件共54页,创作于2023年2月汇编语言程序格式——指令语句对象CPU与机器码相对应,要求CPU执行的操作格式

[标号:]指令助记符

[[操作数],操作数][;注释]第6页,课件共54页,创作于2023年2月汇编语言程序格式——伪指令语句对象汇编程序通知编译器,如何生成目标码。本身不产生机器目标吗格式

[名字]伪指令助记符

[[操作数],操作数...][;注释]第7页,课件共54页,创作于2023年2月汇编语言程序格式——数据项常数确定的数据,有固定值,没有属性变量存放在存储单元中的值在程序中以变量名的形式出现,代表存放数据的存储单元的符号地址三属性段属性/段内偏移量属性/类型属性第8页,课件共54页,创作于2023年2月汇编语言程序格式——数据项标号可执行指令语句的首字节地址的符号表示被JMP/CALL/LOOP等所使用三属性段属性/段内偏移量属性/类型(距离)属性第9页,课件共54页,创作于2023年2月§4-2MASM中的表达式指令操作数形式常数、变量、标号、表达式、关键字表达式的构成运算符运算对象:常数、变量、标号结果为常数、地址在汇编时求值六大类运算第10页,课件共54页,创作于2023年2月表达式——算术运算加、减、乘、除、模、左移、右移运算对象、结果整数禁忌地址相加无法求值第11页,课件共54页,创作于2023年2月表达式——算术运算例:abc equ 35hvar1 db 10hvar2 db 0ahmov ax,abcshr4mov ax,abcshl4mov cx,var2-var1mov bx,abc-5第12页,课件共54页,创作于2023年2月表达式——逻辑运算与、或、非、异或——按位运算运算对象、结果常数禁忌变量名第13页,课件共54页,创作于2023年2月表达式——逻辑运算例:abc = 10habc1 equ 2ahv1 db 3ahmov ax,abcand0fhmov ax,abcorabc1mov ax,v1andabc第14页,课件共54页,创作于2023年2月表达式——关系运算EQ、NE、LT、GT、LE、GE对象数据同段内的偏移地址结果真:全1假:全0第15页,课件共54页,创作于2023年2月表达式——关系运算例:abc equ 10hmov ax,abceq10mov ax,abclt10mov ax,abcgt10第16页,课件共54页,创作于2023年2月表达式——数值返回运算Offset、seg、type、length、size对象变量、标号结果值第17页,课件共54页,创作于2023年2月表达式——数值返回运算Offset变量、标号的段内偏移地址与LEA的差异???Seg变量、标号的段地址第18页,课件共54页,创作于2023年2月表达式——数值返回运算Type变量、标号的类型属性Length外层DUP的单元个数无DUP则返回1第19页,课件共54页,创作于2023年2月表达式——数值返回运算Sizesize=length*type第20页,课件共54页,创作于2023年2月表达式——属性修改运算Ptr临时改变变量、标号的类型属性mov wordptr[bx],0jmp farptrsub1This给变量、标号赋予类型first equthisbytetable dw2000h第21页,课件共54页,创作于2023年2月表达式——属性修改运算High/Low字节分离常数、常数表达式mov al,low(offsetda1)第22页,课件共54页,创作于2023年2月§4-3伪指令语句不生成机器码,帮助解释、生成指令的机器码变量定义、存储器分配、段定义……第23页,课件共54页,创作于2023年2月伪指令语句——数据定义定义/分配变量的存储器单元,并初始化存储器单元格式变量名助记符操作数,操作数…;注释符号地址DBDWDD第24页,课件共54页,创作于2023年2月伪指令语句——数据定义DUP的使用定义重复数据例abc db 10dup(0)ab db 100dup(1,2,34dup(0))第25页,课件共54页,创作于2023年2月伪指令语句——数据定义字符串的定义DB/DW/DD?DB按正常的顺序排列DW/DD只能以两个一组作定义,顺序不同第26页,课件共54页,创作于2023年2月伪指令语句——数据定义符号地址的使用DW?DD?DB??第27页,课件共54页,创作于2023年2月伪指令语句——赋值不分配存储器空间常数EQU不可重复赋值=可重复赋值第28页,课件共54页,创作于2023年2月伪指令语句——段定义段名segment定位类型组合类型‘分类名’

……段名 ends第29页,课件共54页,创作于2023年2月伪指令语句——段定义段名segment定位类型组合类型‘分类名’

……段名 ends定义该段起始地址定位ParaByteWordPage第30页,课件共54页,创作于2023年2月伪指令语句——段定义段名segment定位类型组合类型‘分类名’

……段名 ends定义组合类型NONEPUBLICCOMMONATSTACK第31页,课件共54页,创作于2023年2月伪指令语句——段定义段名segment定位类型组合类型‘分类名’

……段名 ends定义该段的分类名,分类名相同,被组合成同一个段第32页,课件共54页,创作于2023年2月伪指令语句——数据定义dsegsegmentat0055h one db 0 two dw two three dd two four equ 10h five dw four six db 5-fourdseg ends第33页,课件共54页,创作于2023年2月伪指令语句——段分配语句ASSUME说明当前段是哪些段,帮助汇编程序产生段前缀必须放在第一句指令之前不得短缺Assumecs:cseg,ds:dseg,ss:sseg,es:esegAssumenothing第34页,课件共54页,创作于2023年2月伪指令语句——过程定义子程序格式 过程名 PROC 属性

…… Ret

过程名 ENDP第35页,课件共54页,创作于2023年2月伪指令语句——END结束语句标识程序的首指令格式END 标号第36页,课件共54页,创作于2023年2月伪指令语句——段寄存器的初始化DS/ES指令装入movax,dsegmovds,axmovax,esegmoves,ax第37页,课件共54页,创作于2023年2月伪指令语句——段寄存器的初始化SS/SP自动装入ssegsegmentSTACK dw 100dup(0)ssegends第38页,课件共54页,创作于2023年2月伪指令语句——段寄存器的初始化SS/SP(指令装入)定义sseg segment dw 100dup(0)top label wordsseg ends装入Movax,ssegMovss,axMovsp,offsettoptopequthisword第39页,课件共54页,创作于2023年2月伪指令语句——段寄存器的初始化CS自动装入end后的标号便是第一条指令(语句)CS:IP第40页,课件共54页,创作于2023年2月汇编语言源程序的框架段的描述title注释数据段(附加段)堆栈段代码段(Assume)end标号第41页,课件共54页,创作于2023年2月汇编语言源程序的框架Title<程序名><常量定义>dseg segment <变量定义>dseg endseseg segment <变量定义>eseg endssseg segmentstack 100Hdup(0)sseg ends

cseg segment assumecs:cseg,ds:dseg,es:eseg,ss:ssegmain procfarstart: push ds xor ax,ax push ax mov ax,dseg mov ds,ax mov ax,eseg mov es,eseg …… retmain endpcseg endsend start第42页,课件共54页,创作于2023年2月其他伪指令ORG<表达式>定位伪指令设置汇编程序位置指针,指定下一语句的起始偏移地址$汇编时用于指示下一数据/指令的段内偏移量,当前位置计数器常常用来计算前一变量的长度,字节数第43页,课件共54页,创作于2023年2月其他伪指令dseg segment

org1000hv1 db 10h,20h,30H,40Hcount equ $-v1dseg ends第44页,课件共54页,创作于2023年2月其他伪指令<名称>Label<类型>给存储单元(变量或标号)取一名字,并指定其类型<名称>同样具有三个属性DataByte Label ByteDataWord DW 20HDup(0)第45页,课件共54页,创作于2023年2月结构定义语句复杂数据的定义,将不同类型的数据放在同一个数据结构中结构定义

结构名 STRUC ……

结构名 ENDS结构变量预置结构变量名 结构名<元素值,元素值,……>定义结构成员,但不分配内存预置时,才被分配存储单元第46页,课件共54页,创作于2023年2月结构定义预置tab struc t1 db ‘abcd’ t2 dw ? t3 dw segL1 t4 dw 2dup(0) t5 dw 1122H dw 3344Htab endsone tab <>two tab <‘STOP’>three tab <,0FH,SEGL2>four tab 5dup<‘EFGH’,55H>

第47页,课件共54页,创作于2023年2月结构中的变量简单变量由DB、DW、DD定义的单个结构元素内容可被修改如: T1 DW 1234H多重变量包含多个元素值不可改,只能使用初值如: T4 DW 2DUP(0)

T5 DW 1122H,3344H第48页,课件共54页,创作于2023年2月结构中的变量字符串内容可改,长度不得超过如: T6 DB ‘ASBD’多重结构引用另一结构第49页,课件共54页,创作于2023年2月结构的使用MOV TWO.T2, AXMOV BX, FOUR.T5[0]MOV SI, OFFSETFOURMOV BX, [SI].T5[0]第50页,课件共54页,创作于2023年2月结构的使用例:Page149/例4-41利用结构存储学生的信息结构变量的预置……第5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论