微机原理课件第15章2010.ppt_第1页
微机原理课件第15章2010.ppt_第2页
微机原理课件第15章2010.ppt_第3页
微机原理课件第15章2010.ppt_第4页
微机原理课件第15章2010.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

windows操作系统操作系统 为每一个应用程序为每一个应用程序 建立一个建立一个 4gb的的线线 性空间。线性空间性空间。线性空间 中只包含该应用程中只包含该应用程 序的数据段和代码序的数据段和代码 段段,操作系统使用,操作系统使用 的代码和数据(如的代码和数据(如 全局描述符表全局描述符表 gdt ,局部描述符表局部描述符表 ldt与页表等)以与页表等)以 及一些共享代码和及一些共享代码和 数据等。数据等。 与实模式的汇编相比,与实模式的汇编相比,win32汇编对内存数据的访问更加方汇编对内存数据的访问更加方 便。便。 (2)windows操作系统不仅已经预先为要运行的用户应操作系统不仅已经预先为要运行的用户应 用程序的代码段、数据段和堆栈段设置好描述符,规定用程序的代码段、数据段和堆栈段设置好描述符,规定 这些段的的段基址都为这些段的的段基址都为0,段界限都为,段界限都为 ffffffffh。而。而 且程序开始执行时,且程序开始执行时,cs,ds,es,ss里存放的选择子里存放的选择子 已经指向正确的描述符,已经指向正确的描述符,程序员不需要给这些段寄存器程序员不需要给这些段寄存器 赋值。在整个程序运行期间,程序员也不应该修改这些赋值。在整个程序运行期间,程序员也不应该修改这些 段寄存器的值。段寄存器的值。 (1)在在windows系统中,每个应用程序的整个系统中,每个应用程序的整个4gb线性线性 地址空间都作为一个段。地址空间都作为一个段。代码段和数据段代码段和数据段 /堆栈段的空堆栈段的空 间统一的,都是间统一的,都是 00000000hffffffffh。在这个。在这个 4gb的的 地址空间中,一部分用来存放程序,一部分作为数据地址空间中,一部分用来存放程序,一部分作为数据 区,一部分作为堆栈,另外还有一部分被系统使用。区,一部分作为堆栈,另外还有一部分被系统使用。 这些部分的地址区域是不重合的。这些部分的地址区域是不重合的。 (1)为了系统的安全,运行在特权级)为了系统的安全,运行在特权级3的应用程序是的应用程序是 不能像工作在实模式下一样,自己来编写中断服务子不能像工作在实模式下一样,自己来编写中断服务子 程序,也不能通过修改中断描述符表来调用系统提供程序,也不能通过修改中断描述符表来调用系统提供 的中断服务子程序。的中断服务子程序。 (2)在)在 windows操作系统中,使用操作系统中,使用windows提供的应用提供的应用 程序编程接口程序编程接口 (api)来代替中断服务子程序提供的系统功来代替中断服务子程序提供的系统功 能能 应用程序执行时,对端口是不能直接进行访问的,也应用程序执行时,对端口是不能直接进行访问的,也 不能使用不能使用 sti,cli中断允许和禁止指令。中断允许和禁止指令。 格式:格式: end标号标号 功能:通知汇编程序,源程序到此结束,标号所对应的功能:通知汇编程序,源程序到此结束,标号所对应的 指令是程序的启动指令。指令是程序的启动指令。 win32汇编软件的开发可分源程序开发和资源开发两汇编软件的开发可分源程序开发和资源开发两 部分部分 (1) 汇编源程序汇编源程序 hello.asm ml /c /coff hello.asm (2)链接目标程序)链接目标程序 hello.obj link /subsystem:windows hello.obj (3)运行可执行程序)运行可执行程序 hello.exe hello.exe 注意:如果该程序有资源文件注意:如果该程序有资源文件hello.res,则应该用,则应该用 link将将 hello.obj和和hello.res链接成链接成 hello.exe。 win32汇编使用的高版本汇编中,汇编使用的高版本汇编中,标号的作用域是当前标号的作用域是当前 的子程序。的子程序。 在同一个子程序中的标号不能同名,但在不在同一个子程序中的标号不能同名,但在不 同的子程序中可以有相同名称的标号。同的子程序中可以有相同名称的标号。 1.标号标号 win32汇编中变量的类型很多,根据变量的作用域汇编中变量的类型很多,根据变量的作用域 可分为全局变量和局部变量。可分为全局变量和局部变量。 (1)全局变量)全局变量 用数据定义伪指令在用数据定义伪指令在.data或或.data?段定义全局段定义全局 变量。全局变量的作用域是整个程序。变量。全局变量的作用域是整个程序。 (2)局部变量)局部变量 例:例: local var1:word local var2 local var310:byte 注意:注意: local伪指令必须紧跟在子程序定伪指令伪指令必须紧跟在子程序定伪指令proc 之后,其它指令之前。局部变量不能和全局变量同名之后,其它指令之前。局部变量不能和全局变量同名 。 获取全局变量地址使用获取全局变量地址使用offset运算符。运算符。 例:例: mov bx,offset 变量名变量名 注意:注意: addr伪操作符只能在伪操作符只能在 invoke的参数中使用。的参数中使用。 对于局部变量,对于局部变量, masm对此有一个专用的伪操作符对此有一个专用的伪操作符 addr。 格式:格式: addr 局部变量名和全局变量名局部变量名和全局变量名 1结构的定义结构的定义 格式:结构名格式:结构名 struct 字段字段 1 类型类型? 字段字段 2 类型类型? 结构名结构名 ends 2结构变量的定义结构变量的定义 结构变量的定义格式如下:结构变量的定义格式如下: 变量名变量名 结构名结构名 格式一格式一 或或 变量名变量名 结构名结构名 格式二格式二 3结构变量的访问结构变量的访问 在汇编中,结构变量的访问的两种较简单的方在汇编中,结构变量的访问的两种较简单的方 法:法: (1)mov ax,stu2.record 表示把表示把 record字段的值放入字段的值放入 ax中去。中去。 (2)mov esi,offset stu2 使用指针存取数据结构使用指针存取数据结构 格式:格式: 子程序名子程序名 proc 语言类型语言类型 可视区域可视区域 uses 寄存器列寄存器列 表表 ,参数参数 :类型类型 .vararg local 局部变量列表局部变量列表 ret 子程序名子程序名endp (3)uses寄存器列表寄存器列表 表示表示 cpu在进入子程序后自动执行在进入子程序后自动执行push这些寄存器这些寄存器 的指令,在的指令,在 ret子程序返回前自动执行子程序返回前自动执行pop指令,用于指令,用于 保护现场。保护现场。 (4)参数和类型参数和类型 参数指参数的名称,在定义参数名的时候不能跟全局参数指参数的名称,在定义参数名的时候不能跟全局 变量和子程序中的局部变量重名。对于类型,由于变量和子程序中的局部变量重名。对于类型,由于 win32中的参数类型只有中的参数类型只有32位(位( dword)一种类型,一种类型, 所以可以省略。所以可以省略。 (5)vararg 表示在已确定的参数后还可以跟多个数量不确定的参表示在已确定的参数后还可以跟多个数量不确定的参 数。数。 完成了子程序定义之后,可以用完成了子程序定义之后,可以用call指令或更方便的指令或更方便的 invoke伪指令来调用子程序。伪指令来调用子程序。 例:利用子程序完成三数相加例:利用子程序完成三数相加n1+n2+n3,假设假设 n1=1122h,n2=3344h,n3=5566h .586 .model flat,stdcall option casemap:none include kernel32.inc includelib kernel32.lib include windows.inc compute proto para1:dword ;计算子程序声明计算子程序声明 .data n1 dw 1122h n2 dw 3344h n3 dw 5566h .data? sum dw ? ;计算结果计算结果 分支语句的语法如下:分支语句的语法如下: .if条件表达式条件表达式 1 表达式表达式 1为为“真真”时执行的指令时执行的指令 .elseif 条件表达式条件表达式 2 表达式表达式 2为为“真真”时执行的指令时执行的指令 .elseif 条件表达式条件表达式 3 表达式表达式 3为为“真真”时执行的指令时执行的指令 .else 所有表达式为所有表达式为 “否否”时执行的指令时执行的指令 .endif 注意:关键字注意:关键字 if/elseif/else/endif的前面有个

温馨提示

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

评论

0/150

提交评论