【汇编语言/底层开发】8、数据处理的两个基本问题
标题中所指的两个基本问题是:(1)处理的数据在什么地方?(2)要处理的数据有多长?要使得计算机正常工作,这两个问题必须给予说明,否则无法工作。
1、bx, si, di, bp这四个寄存器用于内存寻址的规则有:
(1)在8086中只有这四个寄存器可以用于[]中进行内存单元寻址。也就是说,指令: mov ax, [bx]是正确的,而mov ax, [cx]是错误的。
(2)在[]寻址中,这四个寄存器可以单独出现,也可以按照以下四种组合出现:bx+si, bx+di, bp+si, bp+di。以下使用时错误的: mov ax, [bx+bp]; mov ax, [si+di]。
(3)若在[]中使用了bp,而指令中没有显式指出段地址,则段地址默认保存于ss(即ss等同于sp)。
2、机器指令处理数据的所在位置基本上所有的机器指令的分类大致分为读取、写入、运算三类,其运行所最关心的问题是执行指令前一刻要处理数据的位置(通常来自于三个地方:CPU内部、内存和端口)。
3、数据位置的表达三个概念:(1)立即数;(2)寄存器;(3)段地址和偏移地址。
4、寻址方式表示数据放在内存中时确定数据位置的方式,主要有:直接寻址、寄存器间接寻址、寄存器相对寻址、基址编址寻址、相对基址编址寻址。
5 、指令处理的数据的长度80X86指令可以处理字和字节两种尺寸的数据,指定数据长度的方法主要有三种:
(1)通过寄存器名说明;即通过ax等寄存器获取数据则表示字操作,通过al、ah等寄存器则是表示字节操作;
(2)在没有寄存器名的情况下,通过word ptr或byte ptr指明字操作或字节操作;
(3)通过指令默认制定操作方式;如push、pop等只进行字节操作。
6、div指令注意的问题:
(1)除数:可能为8或16位,保存于内存单元或寄存器中;
(2)被除数:被除数的位数一定是除数的2倍;16位的被除数保存于AX中,32位的被除数保存于DX+AX中,前高后低;
(3)商和余数:商保存于AL或AX中(根据除数为8或者16位),余数保存于AH或DX中(根据除数为8或者16位);
7、伪指令dd类似于定义字型数据的伪指令dw,dd用于定义一个双字节结构,即define double。
8、操作符dup操作符dup为duplicate的简称,配合db、dw、dd等伪指令,进行数据的重复。
如:db 3 dup(0)——表示定义三个字节,值均为0;db 3 dup(0,1,2)——表示定义三个字节,其值分别为0,1,2;
最前面的伪指令表示定义数据的类型,dup前面的数字表示括号内的值重复的次数,括号中表示定义的数据。
利用汇编挖掘编程语言的本质 虽然现在基本不会直接使用汇编来开发程序,但是汇编仍然有学习研究的价值,可以利用汇编语来挖掘编程语言的本质。
一文读懂微内核架构 微内核是一种典型的架构模式 ,区别于普通的设计模式,架构模式是一种高层模式,用于描述系统级的结构组成、相互关系及相关约束。
学习汇编语言的15大好处 破解高价商业软件 分析商业软件高价值功能 分析高盈利辅助的变态功能,基址,CALL 分析传播急速的病毒的实现与防护 分析高利润盗号木马的实现与防护 分析所有游戏数据基址与CALL,变态功能等 易语言,VC++,Delphi,vb等开发环境内嵌汇编 分析游戏驱动保护与过保护驱动 分析百万乃至千万用户使用的软件ODAY漏洞 读懂各类需要汇编语言基础的书籍与文章。
通过机器码程序理解冯诺依曼体系 #right-panel { background-color: #fff } #right-panel .cover-top { background: linear-gradient(to bottom, #fff 50%, transparent) } #cover-bottom #cove...
jerry.yin 毕业于上海大学通信与信息工程学院,从事流媒体和视频编解码的研究与开发工作; 研究领域包括视频编解码标准、视频处理和流媒体技术、移动互联网技术等。
相关文章
- FPGA开发 Quartus Signaltap的基本使用
- AI开发者十问:10分钟了解AI开发的基本过程
- 【并行计算与CUDA开发】基于NVIDIA显卡的硬编解码的一点心得 (完结)
- 【并行计算-CUDA开发】warp是调度和执行的基本单位而harf-warp为存储器操作基本单位
- 【VS开发】Caffelib中出现的问题:强制链接静态库所有符号(包括未被使用的)
- 【Linux开发】linux设备驱动归纳总结(三):2.字符型设备的操作open、close、read、write
- 【VS开发】ConvertBSTRToString(filename) 不能将string转换为BSTR
- 十大程序员开发用到的基本算法
- Java 集成开发环境 eclipse 的安装及基本使用
- Android 开发第四讲 TextView的基本使用
- 史上最详细的Android原生APP中添加ReactNative进行混合开发教程
- 苹果在AR领域不断挖墙角时,iOS开发框架中多了数个AR相关调用文件
- windows使用git开发php项目
- 盘点由中国人开发的编程语言
- 【iOS开发】Alamofire框架的使用一基本用法
- Java基本开发环境搭建
- 开发openGL的一些基本配置
- Python游戏开发入门2 壁球小游戏与图像的基本使用
- 如何在Eclipse中搭建MyBatis基本开发环境?(使用Eclipse创建Maven项目)
- (一)Linux下C++ OpenCV开发环境搭建
- 转:【Python3网络爬虫开发实战】 requests基本用法
- iOS应用内付费(IAP)开发步骤列表
- iOS开发网络篇—NSURLConnection基本使用
- Setup Python 开发环境和IPython的基本使用
- 使用VMware VSphere WebService SDK进行开发 (三)——获取主机(HostSystem)的基本信息
- 使用VMware VSphere WebService SDK进行开发 (一)——基本信息阐述
- 我的Java开发学习之旅------>Java 格式化类(java.util.Formatter)基本用法