zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【汇编语言/底层开发】8、数据处理的两个基本问题

开发 基本 两个 数据处理 底层 汇编语言 问题
2023-09-27 14:29:20 时间
标题中所指的两个基本问题是:(1)处理的数据在什么地方?(2)要处理的数据有多长?要使得计算机正常工作,这两个问题必须给予说明,否则无法工作。 1、bx, si, di, bp 这四个寄存器用于内存寻址的规则有: (1)在8086中只有这四个寄存器可以用于[]中进行内存单元寻址。

标题中所指的两个基本问题是:(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 毕业于上海大学通信与信息工程学院,从事流媒体和视频编解码的研究与开发工作; 研究领域包括视频编解码标准、视频处理和流媒体技术、移动互联网技术等。