汇编语言之寄存器使用bx si di bp】的更多相关文章

转载自:https://www.cnblogs.com/youxin/archive/2012/05/29/2524780.html 如果你看到这篇博客时正在做第七章问题,强烈建议先去把8.1~8.4看了,因为你在这章写代码踩的有关[...]的坑,在8.1~8.4都有说明, 下面都是8.1的内容 通用寄存器的主要用途 寄存器的分类 寄存器 主 要 用 途 通 用 寄 存 器 数据 寄存器 AX 乘.除运算,字的输入输出,中间结果的缓存 AL 字节的乘.除运算,字节的输入输出,十进制算术运算 AH…
在8086CPU中,有一种标记寄存器,长度为16bit: 其中存储的信息被称为程序状态字(Program Status Word,PSW),以下将该寄存器简称为flag. 功能:1)用来存储相关指令的某些执行结果: 2)用来为CPU执行相关指令提供行为依据: 3)用来控制CPU的相关工作方式.…
一.汇编语言中,为什么SI和DI不能同时使用汇编 其实你可以想一下,这两个寄存器的意思,SI源变址寄存器,DI目地变址寄存器,既然是变址寄存器,那么他们肯定是在某个地址的基础上进行偏移变化,由此我们就得出了需要基址寄存器. 你要是把这两个寄存器同时使用,那你地址变化的基址都没有,你该怎么变化呢?你在谁的基础上变化(也就是地址偏移)? 对于这些汇编中的规定,其实有时并不需要书上详细的介绍,我们都应该可以从中推导出这些规则,书上的那些介绍个人认为只是用来验证我们的推测的.或是对我们所掌握的知识的进行…
首先,都可以单独使用. 另外,组合使用的情况下: 记住这张图片就行了=_= 意思就是,bx只能和si,di组合.bp只能和si,di组合.…
这个很简单: sp:表示栈顶指针,指向栈顶地址.与SS相配合使用.ss为栈段. bp:是基址指针,段地址默认在SS中.可以定位物理地址,比如:"mov ax,[bp+si+6]/mov ax,[bp+di+6]. DI:是目的变址寄存器.一般情况下与ds联用,来确定某个储存单元的地址. SI:是源变址寄存器,默认段地址和DI一样,在DS中.和DS联用. 这四个寄存器,都是16位的,不可以分割为八位. 要注意,1,sp和bp段地址默认在SS中.2..sp指向栈顶元素地址.有自加和自减能力,而bp没…
1.[bx]是什么??     和[0]有些类似,[0]表示内存单元,它的偏移地址是0      [bx]同样也表示一个内存单元,它的偏移地址在bx中,mov ax,[bx]  (字)   mov  al,[bx]  (字节)     mov ax,[bx]功能     bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的数据送入ax中 2.描述一个内存单元,需要两种信息:1>内存单元的地址:2>内存单元的长度(类型)      我们用[0]表示一个内存单元时,0表示…
1- [bx]和内存单元的描述 [0]表示内存单元, 他的偏移地址为0 mov ax,[0] 将一个内存单元的内容送入到ax.这个内存单元的长度为2字节(字单元),存放一个字,偏移地址为0,段地址在ds中. mov al,[0] 将一个内存单元的内容送入到al,这个内存单元的长度为1字节(字节单元),存放一个字节,偏移地址为0,段地址在ds中. 完整的描述一个内存单元,需要两种信息:(1)内存单元地址(2)内存单元的长度(类型) mov ax,[bx] 将一个内存单元的内容送入到ax, 这个内存…
0.写在前面 本文中总结于王爽老师的汇编语言,建议有兴趣的都买一本,以支持王爽老师的辛勤付出.再者,这本书写的确实很nice. 8086CPU共有14个registers:AX, BX, CX, DX, SI, DI, SP, BP, IP, CS, SS, DS, ES, PSW, 所有寄存器都是16位的. [1]通用寄存器: AX, BX, CX, DX 通常用于存放一般性的数据: [2]CS和IP (code segment and instruction pointer) - 代码段寄存…
汇编语言基于8086CUP(想学操作系统的前奏!!!) 1.汇编语言的产生 1.1.思维图 1.2.单位转换 1B=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB 1字=2字节=2B=16位 1.3.储存器与内存 因为在这些总线上传输的都是2进制的数,所以可能传输的是相同的2进制数,需要区分哪些是数据,哪些又是指令,所以需要通过不同的总线就行传输来控制. 地址总线:20位2进制 数据总线:16位2进制 控制总线:16位2进制 2.寄存器和内存.栈…
8086 CPU 寻址方式灵活.有以下几种 idata 表示常量 1.   [ idata ] 用一个常量来表示地址,可用于直接定位内存单元,但是在 MASM中要显实在的说明 ds 段寄存器, 比如 mov ax, ds:[0]  ,表示把 ds 寄存器中所在段的地址+偏移地址 0 的内存单元中的值赋给ax  , 不能用 mov  ax, [0] ,这样在masm 中会当作mov ax, 0,   在windows的 debug 和 nasm 中可以用 mov ax, [..] 的方式定位内存,…