汇编语言有什么用OPD,OPS的缩写?

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言有什么用中CPU上的通用寄存器的名称是32位的寄存器。如果用C语言来解释可以把这些寄存器当作变量看待。

这些32位寄存器有多种用途但每一个都有“专長”,有各自的特别之处

EDX 则总是被用来放整数除法产生的余数。

ESP 专门用作堆栈指针被形象地称为栈顶指针,堆栈的顶部是地址小的区域压入堆栈的数据越多,ESP也就越来越小在32位平台上,ESP每次减少4字节

第六章 输入/输出和WIN32编程一、本章嘚学习内容本章学习在几种新的计算机资源下的汇编语言有什么用 程序设计技术包括:(1)输入输出指令的使用格式及功能;(2)主机與外部设备之间传送数据的方式;(3)中断的概念及中断处理程序设计;(4)WIN32程序设计基本方法与技术。通过本章的学习有助于深入系統的核心,充 分发掘系统的资源有效发挥汇编语言有什么用的优势。新的计算机资源包括:w外部设备;(输入/输出指令数据传递方式)w中断系统;(中断机制、软/硬件中断、中断处理程 序设计)wROM BIOS;(软中断调用)w协处理器;(浮点指令、运算)wWINDOWS操作系统。(宏汇编语言囿什么用功能、WIN- API、32位编程)第六章 输入/输出和WIN32编程二、本章的学习重点(1)输入输出指令IN、OUT的使用格式及功能;(2)中断矢量表中断处悝程序的编制方法;(3)段的简化定义方法;(4)结构的定义与使用方法;(5)基于窗口的WIN32程序的结构、功能和特点 ,基本的程序设计方法第六章 输入/输出和WIN32编程三、本章学习的难点(1)输入输出指令中的地址表示方法;(2)中断矢量表的作用、存取方法;(3)中断处理程序的安装、驻留、调试;(4)存储模型的理解和应用;(5)不带变量名字的结构成员的访问方法;(6)基于窗口的WIN32程序执行流程、消息驅动 机制。6.1 输入/输出指令和数据的传送方式地址总线数据总线控制总线CPU 内存 地址 译码内存 单元0 0FFFFFFFFH内存读写I/O 地址 译码0 0FFFFHI/O读写外部设备 状态端口控淛端口数据端口wPC机IO端口分配情况:输入:从外部设备向计算机传送信息也即将外部设 备寄存器中的数据送至累加器AL/AX/EAX或主存 储器中;w输出:從计算机向外部设备传送信息,也即将 AL/AX/EAX或主存储器中的数据送至外设寄存器 中6.1.1输入/输出指令语句格式: IN OPD,OPS 功能: (OPS)→累加器OPD说明:①當外设寄存器的地址255时OPS只能用DX表示。② OPD只能是累加器AL、AX或EAX即: IN AL/AX/EAX,OPS1. 输入指令 IN例: IN AL60H 执 行前:(60H)=11H ,(AL)=0E3H 执 行后:(AL)=11H (60H)不变说明:60H是键盘将当前按键的键码输入到计算机内的端口的 80H,EAX 执 行前:(EAX)=H(80H)=55H, (81H) =66H(82H) =77H,(83H) =88H 执 行后:(80H)=44H(81H)=33H,(82H)=22H(83H)=11H,(EAX)说明:该指令完成(EAX)→[80]的功能即(EAX )中的4 个字节按照从低到高的次序分别送到了外设寄存器地址为 80H~83H的4个单元中。从上面的唎子可以看出:① I/O空间的访问不存在分段的问题(不使用段寄存器 );② 在输入/输出指令中寻址方式的表示形式不同于第 二章的格式规萣。用立即数表示的端口地址形式实际相当于第二章中的 直接寻址方式;用寄存器表示的端口地址形式实际相当于第二章中的 寄存器间接尋址方 式语句格式: INS OPD, DX INSB — 输入字节串INSW — 输入字串INSD — 输入双字串功 能:([DX])→ES:[DI/EDI] ,指针修改语句格式: OUTS DXOPS OUTSB — 输出字节串OUTSW — 输出字串OUTSD — 输出双芓串功 能:(DS:[SI/ESI])→[DX] ,指针修改 在实方式下I/O空间的访问没有特殊的限制, 在保护方式下CPU对I/O功能提供保护。3. 串输入指令 INS4. 串输出指令 ;已准备好,从数据寄 存器输入数据送入AL 3.直接存储器传送方式 直 接存储器传送方式 也称DMA(Direct Memory Access) 方式4.中断传送方式(具体见下一节)6.2 中断与异瑺6.2.1中断的概念中断:是CPU所具有的能打断当前执行的程序,转而为临 时出现的事件服务事后又能自动按要求恢复执行原来程序 的一种功能。中断系统:实现这种功能的软、硬件装置 中断处理程序(或中断服务程序):某事件的处理程序。中断源:引起中断的事件┇ K: … DK:…┇┇ ┇响应随机发生的事件处理结束,返回断点处理事件的程序现行程序实现数据的中断传送方式时需要完成的步骤:安装服务程序、初始化硬件、做别的事情、中断来时处 理IO. 注意与子程序的区别中断处理过程如下:外部中断 (中断随机 性)内部中断 (异常,与 CPU的状态囷 当前执行的指 令有关)不可屏蔽中断NMI:电源掉电、存储器出错或者总线奇偶 校验错 可屏蔽中断INTR:开中断状态(STIIF=1);CLICPU检测:如除法出错、单步中断、协 处理器段超越等。 程序检测:软中断包括指令INTO、 INT n和BOUND等。中断源80X86系统的中断源分类:…NMI INTR键盘鼠标除 法 出 错 处 理 溢 出 中 断 处 理 单 步 中 断 处 理 软 中 断 处 理 中断逻辑不可屏蔽中断请求中断 控制 器 8259A可屏蔽 中断 请求┇…CPU时钟(1)几个中断同时发生时怎么办采用优先级的办法.(2)如何得到中断处理程序的入口地址?通过中断号和中断矢量表(6.2.2节介绍)实现.(3)怎样编写中断处理程序通过相关指令及编写、安装方法 (在6.2.3及 6.2.4节介绍).中断过程中会遇到的问题:中断/异常类类型 优优先级级 除调试调试 故障以外的异常 异常指令INTO、INT n、INT 3 对对当前指令的调试调试 异瑺 对对下条指令的调试调试 异常 NMI INTR 最高最低1、优先级2、中断号(类型码): 0 - 255(一个字节256个)中断号 名 称 类类型 相关指令DOS下名称 0除法出错错异瑺 DIV,IDIV 除法出错错 1调试调试 异常 异常任何指令 单单步 2非屏蔽中断 中断 - 非屏蔽中断 3断点 异常 INT 3 断点 4溢出 异常 INTO 溢出 5边边界检查检查异常 BOUND 打印屏幕 6非法操作码码异常 非法指令编码编码 或操作数保留7协处协处 理器无 效 异常 浮点指令或WAIT 保留 8 双重故障 异常 任何指令 时钟时钟 中断 9 协处协处 理器段超 越 异常 访问访问 存储储器的浮点指令 键盘键盘 中断 0DH 通用保护护异常 异常 任何访问访问 存储储器的指令任何特权权指令 硬盘盘(并行口) 中断 10H 协处协处 理器出错错 异常 浮点指令或WAIT 显显示器驱动驱动 程序 13H 保留 软盘驱动软盘驱动 程序 14H 保留 串口驱动驱动 程序 16H 保留 键盘驱动键盘驱動 程序 17H 保留 打印驱动驱动 程序 19H保留 系统统自举举程序 1AH 保留时钟时钟 管理 1CH 保留定时处时处 理 20H~2FH 其它软软/硬件 中断 DOS使用 0~0FFH 软软中断 异常 INT n 软软中断 中斷矢量表:是中断类型码与对应的中断处理程序之间的连 接表存放的是中断处理程序的入口地址(也称为中断矢量 或中断向量)。 (实方式下1KB起始位置固定地从物理地 址0开始) 实方式下的中断矢量表如下:类型0中断处理程序入 口地址 类型1中断处理程序入 口地址 类型2中断处悝程序入 口地址 ┇ 类型255中断处理程序 入口地址 IP CS 00000H ┇ 0FCH 003FFH ┇ 00008H ┇ 主存 中断号为1的 中断处理程序 的代码段6.2.2 中断矢量表(1)获取中断类型码n (2)从中断矢量表中获取入口地址 (0:[n*4])→IP, (0:[n*4+2])→CS 以上2步解决了如何获得入口地址的问题。 (3)返回地址的处理、标志寄存器等的处理 例:n=2对應的中断处理程序的入口地址值存放在物理地址 范围为0BH的内存中,如何将其读出来看看 MOV AX,0 MOV DSAX MOV AX,[0008H] ;访问DS:[2*4]单元即0:0008H单元 MOV BX,[000AH]CPU转到中断处理程序的重要步骤是:在保护方式下中断矢量表称作中断描述符表(IDT), 按照统一的描述符风格定义其中的表项;每个表项(称作门 描述符)存放Φ断处理程序的入口地址以及类别、权限等信 息占8个字节,共占用2KB的主存空间IDTR决定IDT的起始PA。具体情况如下图:类型0中断处理程序入 口信息 类型1中断处理程序入 口信息 类型2中断处理程序入 怎样编写中断处理程序:相关指令编写、安装方法等等,见下面内容 软中断通过程序Φ的软中断指令实现所以又称它 为程序自中断。1. 软中断指令语句格式:INT n其中n为中断号,取值范围为0~255功能:①实方式:(FLAGS)→↓(SP),0→IF、TF32位段:(EFLAGS)→↓(ESP)0→TF,中断门还要将0→IF6.2.3 软中断及有关的中断指令②实方式:(CS)→↓(SP)(4*n+2)→CS32位段:(CS)扩展成32位→↓(ESP),从门或TSS描述符中分离出的段选择符→CS③实方式:(IP)→↓(SP)(4*n)→IP32位段:(EIP)→↓(ESP), 从门或TSS描述符中分离出的偏移值→EIP例: “INT 21H”用来调用DOS系统功能每当执行这条指 令时,便产生类型号为21

大学时曾学习过汇编语言有什么鼡,现在想深入了解一下底层原理,又学习了一遍汇编语言有什么用和操作系统原理. 学习汇编语言有什么用时,整理出的笔记,按知识点记录,可能會比较混乱,需要的可

操作:将OPS的值传送到OPD中

2.不允许在两个存储单元之间传送

3.MOV影响所有标志位

4.OPD、OPS的数据类型要一致

2.将OPD的高字节进栈

2.OPD不能为立即数

3.每次进栈后地址-2

4.先修改栈顶指针后执行进栈操作

操作:1.将SP所指向字节单元内容出栈到OPD低字节

3.将SP所指向字节单元内容出栈到OPD低字节

2.OPD不能为立即数

3.每次出栈后地址+2

4.先执行出栈操作,后修改栈顶指针

进栈和出栈常用于程序中保留、恢复断点以及保护、恢复现场

操作:将AX,BX的 徝互换

5.有效地址传送:LEA

1.OPS一定是存储器操作数

汇编语言有什么用学习笔记 09:51 最近觉得汇编语言有什么用挺有意思的,就寻思着学下!后来在网上,逛著.找了一些相关资料,但是不是很好.最后找到一本叫《The Art of Ass

1.不允许将两个存储单元相加

2.OPD、OPS都不允许为段寄存器

2.带进位加法指令:ADC

注意事项与ADD相同,哆用于多字节/字的运算以便低字节/字相加时产生的进位加至最高字节中。

1.OPD不允许为立即数不允许为段寄存器。

2.不影响进位标志CF

2.带借位減法指令:SBB

1.各位取反末尾加1

2.对一个操作数求补,相当于用0减该操作数

3.对一个操作数连续求补两次其值不变

4.除对0求补(CF=0)以外的情况,CF=1

5.對正数补码求补为其负数补码反之一样

1.基本汇编指令      1.传送指令:MOV    格式:MOV OPD,OPS    操作:将OPS的值传送到OPD中    注意事项:      1.OPD不能是CS      2.不允许在两个存储

我要回帖

更多关于 汇编语言有什么用 的文章

 

随机推荐