精华内容
下载资源
问答
  • 寄存器

    2018-10-14 15:12:00
    字的高八位存放于通用寄存器高八位寄存器。 字的低八位存放于通用寄存器低八位寄存器。 2.8086CPU给出物理地址的方法 (1)内存单元的物理地址 CPU访问内存单元时要给出内存单元的地址。所有的内...

    1.字数据在寄存器中的存放

    字节   内存划分的基本单位

    字       两个字节

    双字   四个字节

    四字   八个字节

    一个字由两个字节组成,可以存放在一个16位寄存器中。

    字的高八位存放于通用寄存器的高八位寄存器。

    字的低八位存放于通用寄存器的低八位寄存器。

    2.8086CPU给出物理地址的方法

    (1)内存单元的物理地址

    CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间。每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。

    (2)8086结构表示物理地址的障碍

    8086内部的寄存器都是16位的,而外部地址总线宽度为20位。

    (3)8086表示物理地址的解决途径

    8086在内部用两个16位地址通过计算合成得到一个20位的物理地址。计算合成由CPU内部的地址加法器实现。

    3.段的概念

    "段"是8086为解决用16位寄存器表示20位的物理地址而引入的一个逻辑上的概念。可以根据需要,将地址连续、起始物理地址为16倍数的一组内存单元(不超过64KB)当作一个"段"使用。

    8086中,通过段地址:偏移地址来间接描述内存单元的物理地址。CPU根据如下公式计算得到物理地址:

    其中:

    "段地址:偏移地址"也称"逻辑地址"

    "段地址*16"构成的起始物理地址,故根据需要划分段使用时,段的起始物理地址必须是16的倍数。

    段的划分是灵活的,一个物理地址可以用不同的"段地址:偏移地址"表示。只要满足段的起始物理地址是16的倍数。

    在写法上,地址通常用十六进制表示。表示十六进制的H在"段地址:偏移地址"中可省略不写。

    4.寄存器CS和IP的作用、指令执行过程

    指令和数据是应用上的概念。在内存中,它们均以二进制形式存在。

     CS:代码段段寄存器,用于存放代码段的"段地址"

    IP:指令指针寄存器,用于存放CPU将要读取的指令在代码段的偏移地址。

    CS:IP对应的物理地址存放的是CPU将要读取的指令。

     

         

    5.指令move,add,jmp的基本用法

    汇编指令:mov ax,bx

    操作:寄存器BX的内容送到AX中

    汇编指令:add ax,bx

    操作:寄存器BX的内容加到AX中

    jmp  段地址:偏移地址

    用指令中给出的段地址修改CS,偏移地址修改IP。

     jmp 某一合法寄存器

    用指令中寄存器的值修改IP 

    转载于:https://www.cnblogs.com/byxy/p/9786420.html

    展开全文
  • 参考网站STM32中单独设置GPIO端口高8位/8位的方法操作STM32的IO可以使用库函数,但这样一次只能操作一...但如果高八位IO已被占用,如用作输入,那么这个寄存器操作会直接导致输入失效。为此,使用BSRR寄存器操作来...

    参考网站

    STM32中单独设置GPIO端口高8位/低8位的方法

    操作STM32的IO可以使用库函数,但这样一次只能操作一位IO,对于需要同时操作8位IO,如使用无符号八位数由按键控制递增或递减控制8个开关的情况,则必须使用位带操作。常用的方法是使用GPIOx->ODR=0xXXXX;的方法。但如果高八位IO已被占用,如用作输入,那么这个寄存器操作会直接导致输入失效。为此,使用BSRR寄存器操作来实现只对低八位IO的操作。


    代码如下

    #define GPIO_WriteLow(GPIOx,a)    GPIOx->BSRR=(((uint32_t)(uint8_t)~(a))<<16)|((uint32_t)(uint8_t)(a)) 
    #define GPIO_WriteHigh(GPIOx,a)   GPIOx->BSRR=(((uint8_t)(uint8_t)~(a))<<24)|(((uint32_t)(uint8_t)(a))<<8)
    

    对低位操作由参考网站BSRR寄存器图可以看到,BSRR高16位为复位,第十六位为置位,这样,程序就很好理解。(uint8_t)~(a)为对a取反,<<16表示左移十六位至BSRR高16位,(uint32_t)表示BSRR为32位寄存器。(uint32_t)(uint8_t)(a)为BSRR低16位寄存器操作,两者取或,就是对高16位的清零和低16位的置位进行操作,影响低八位的同时不影响高八位。对高八位操作同理,只是将a左移至高八位。


    展开全文
  • 通用寄存器有8个,都是16为位的,分别是ax,bx,cx, dx,si,di,sp, bp,其中寄存器ax,bx,cx, dx又被分为高八位低八位高八位低八位都可以区分开来使用。 ax寄存器高八位是ah,低八位是al。 bx寄存器高八位是...

    通用寄存器有8个,都是16为位的,分别是ax,bx,cx, dx,si,di,sp, bp,其中寄存器ax,bx,cx, dx又被分为高八位和低八位,高八位和低八位都可以区分开来使用。

    ax寄存器的高八位是ah,低八位是al。

    bx寄存器的高八位是bh,低八位是bl。

    cx寄存器的高八位是ch,低八位是cl。

    dx寄存器的高八位是dh,低八位是dl。

    ax寄存器,accumulator,累加寄存器,是进行算术运算的主要寄存器,端口操作也用它传送数据。

    bx寄存器,base,基址寄存器,作为基础地址使用。

    cx寄存器,count,计数器寄存器,主要用于循环。

    dx寄存器,data,数据扩展位寄存器,如乘除运算,端口操作时用作存放端口地址。

    si寄存器,source index,源变址寄存器,字符串指令默认si寄存器为源地址偏移地址。

    di寄存器,destination index,目的变址寄存器,字符串指令默认di寄存器为目的字符串偏移地址。

    bp寄存器,base pointer,基址指针寄存器,一般用于堆栈中的数据操作。

    sp寄存器,stack point,堆栈指针寄存器,一般总是指向栈顶的位置。

    然而80386后面的CPU中,8个通用寄存器变成了32位的了,分别叫做eax,ebx,ecx,edx,esi,edi,ebp,esp。

    所以不是高八位与低八位之分了,而是高十六位于低十六位之分了,但是功能不变。

    展开全文
  • 累加寄存器 AH 高八位 AL 低八位 CX counter 计数寄存器 CH 高八位 CL 低八位 DX data 数据寄存器 实模式 寻址方式 16 BX base 栈指针寄存器 BH 高八位 BL 低八位 16位的段寄存器汇编指令介绍启动区内容装载地址

    一、寄存器

    16位寄存器,原来都是8位的,为了表示区分,在后面加上后缀 X 表示 extent 扩展的意思
    AX accumulator 累加寄存器    AH  高八位     AL  低八位
    CX counter        计数寄存器    CH  高八位     CL  低八位
    DX data             数据寄存器    DH  高八位     DL  低八位
    BX base            栈指针寄存器 BH  高八位     BL  低八位

    BP base pointer       基址指针寄存器
    SI sorce index          源変址寄存器
    DI destination index 目的変址寄存器

    16位的段寄存器
    segment register,用于基于16位寄存器的32位寻址
    ES  extra segment  附加段寄存器
    CS  code segment
     代码段寄存器
    SS  stack segment  栈段寄存器
    DS  data
    segment   数据段寄存器
    FS  segment part2
    GS  segment part3 

    32位寄存器表示
    EAX  ECX EDX EBX 前缀E表示 extend 扩展的意思 ,其中这些寄存器的低16位就是去掉E表示的16为的寄存器,其中高16为没有明确的名字直接使用

    充:

    实模式下的寻址

    若直接使用BX16为的寄存器寻址,最大的内存访问范围为 0-0xffff,也就是0-65535,最大才64K

    因此使用段寄存器来增加内存访问范围,以 ES:BX 这种方式表示地址,写成 MOV AL,[ES:BX] ,表示ES*16+BX的

    地址,如果把两个寄存器的值都带入0xffff,则最大的访问范围为1114095字节,也就是扩展到1M以内的地址。

    事实上,不管我们指定内存什么地址都需要指定段寄存器,一般省略的话默认把 DS 作为段寄存器。

    因此 我们使用 MOV CX,[1234] 实际上就是 MOV CX,[DS:1234] ,MOV AL,[SI] 实际上是 MOV AL,[DS:SI]  意思



    二、汇编指令介绍

    MOV 复制操作  源地址和目的地址的数据长度必须相同 可以根据现有的寄存器进行隐式转化,赋值之后保留原来寄存器中的值
    ADD 加法操作
    ADD SI,1  等于SI=SI+1
    CMP 注:是if语句的一部分
    CMP AL,0 等于 if(AL==0) 下面通常跟着一条指令作为一个整体
    JE 跳转指令 相当于C中的 goto操作


    三、其他相关背景知识
    1.内存

    超大规模的存储单元 属于外部存储区
    CPU 内存管理芯片  内存

    32位cpu容量很小 只有40字节左右 ,需要内存的帮助
    程序实际上是放在内存中的
    因此,cpu中的寄存器负责运算,而运算所需要的内容存放在内存中
    能够用作存放地址值的寄存器,即能够时候[]去取出地址中值的寄存器非常有限,只有BX BP SI DI (可以看作指针变量)
    可以通过关键词 BYTE  WORD DWORD 来指定内存中的值的类型 ,BYTE[SI],类似于C语言中定义指针的类型
    例如 把DX寄存器中值为地址的值赋值给AL不能 直接写为:

     MOV AL,[DX]

    正确写法:

    MOV BX, DX

    MOV AL, BYTE [BX] 




    2.BIOS
    基本输入输入系统,烧写在主板的ROM中,为操作系统开发人员准备的一些基本的函数集合
    通过INT可以调用一些函数

    3.启动区内容的装载地址
    0x00007c00 - 0x00007dff

    启动区指软盘的第一个扇区,512字节,关于软驱的知识,后面再继续介绍,我们写的操作系统模拟软盘的存储结构来实现。

    展开全文
  • 寄存器操作相关操作

    2020-06-29 14:34:21
    一、如何读取高八位低八位 取num(16位数) 取高八位:num >> 8 即num右移八位,此时读取的数即高八位值 取低八位:num & 0x00ff 即将高八位直接清0,此时读取的数即低八位值 二、
  • 【单片机】51单片机

    2019-12-19 10:46:17
    TH0/TH1/TH2 为定时器存储寄存器高八位(High) TL0/TL1/TL2 为定时器存储寄存器低八位(Low) 当THX-TLX 为 1111111111111111 即 十进制数65535时,再加1,定时器存储寄存器数据溢出,TFX被置为1 (X为0,1,2) 定...
  • 51单片机的特殊功能寄存器符号地址功能介绍BF0HB寄存器ACCE0H累加器PSWD0H程序状态字TH2*CDH定时器/计数器2(高8位)TL2*CCH定时器/计数器2(8位)RCAP2H*CBH外部输入(P1.1)计数器/自动再装入模式时初值寄存器高八位...
  • 8086寄存器分类

    千次阅读 2016-10-16 14:04:58
    这几个寄存器又分为高八位低八位,分别取名为AH / AL、BH / BL、CH / CL、DH / DL; 假如AX的值为00000000 执行mov ah,1 那么ax的值为00010000,执行mov al,1 那么ax的值为00000001  SI――源变址寄存器...
  • 8086寄存器

    2011-07-30 09:08:25
    数据寄存器包括AX,BX,CX,DX四个通用寄存器,他们可以以字16位的形式使用,也可以...以字形式使用时四个通用寄存器称为AX,BX,CX,DX,以字节形式使用,高八位通用寄存器称AH,BH,CH,DH。低八位称AL,BL,CL,DL。
  • Q0—Q7: 八位并行输出端,可以直接控制数码管的8个段。 Q7': 级联输出端。可以将它接下一个595的DS端。 DS: 串行数据输入端。 74595的控制端说明: /MR(10脚): 低点平时将移位寄存器的数据清零。通常我将它接Vcc。 ...
  • 每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)分别控制每个端口的高八位低八位,如果IO口是0-7号的话,则写CRL寄存器,如果IO口是8-15号的话,则写CRH寄存器,两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR...
  • (四) 寄存器

    2020-10-06 16:31:18
    文章目录寄存器(8086)AX、AL 寄存器(8086) 寄存器是cpu内部的信息存储单元 通用寄存器:AX、BX、CX、DX 变址寄存器:SI、DI ...指针寄存器:SP、BP ...指令指针寄存器:IP ...AH 代表AX 的高八位、AL 代表AX 的
  • STM32 GPIO寄存器

    千次阅读 2014-02-26 14:30:31
    每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)分别控制每个端口的高八位低八位,如果IO口是0-7号的话,则写CRL寄存器,如果IO口是8-15号的话,则写CRH寄存器,两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR...
  • 微机原理 寄存器和七种寻址方式

    千次阅读 2018-10-12 22:02:23
    其中前四个又分为高八位低八位 AX 累加器 BX 基址寄存器 CX 计数寄存器 DX 数据寄存器 BP 基址指针寄存器 SP 堆栈指针寄存器  SI 源变址寄存器 DI 目的变址寄存器 IP 指向当前需要取出的指令 FR 存储一些标志,如...
  • STM32 GPIO 相关寄存器

    2016-07-08 17:13:18
    每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)分别控制每个端口的高八位低八位,如果IO口是0-7号的话,则写CRL寄存器,如果IO口是8-15号的话,则写CRH寄存器,两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR...
  • STC89C52IAP应用

    2011-11-14 17:35:02
    //IAP操作时的地址寄存器高八位 sfr IAP_ADDRL = 0xE4; //IAP操作时的地址寄存器低八位 sfr IAP_CMD = 0xE5; //IAP操作命令模式寄存器,须命令触发寄存器触发才生效 sfr IAP_TRIG = 0xE6; //IAP操作时命令触发...
  • 在8086/8088微处理器中有14个16位寄存器。 按用途可划分为以下:   高八位 低八位 eax与ax的区别: 00000000 00000000 00000000 00000000 00000000 00000000 0000000 00000000 EAX 32位
  • 寄存器部分——CPU内部工作原理 ...高八位低八位;BX、CX和DX与AX相同。 字占两个字节,存在一个16位寄存器中。 地址加法器合成物理地址方法:物理地址=段地址*16+偏移地址 段寄存器提供段地址 四个段寄存器:CS、DS
  • 配置gpio端口配置寄存器注意事项

    千次阅读 2016-08-29 09:03:44
    两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)分别控制每个端口的高八位低八位。如果IO口是0-7号的话,则写CRL寄存器;如果IO口是8-15号的话,则写CRH寄存器。 两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)一个是只读...
  • 根据定时器功能和数码管显示,定时器方式,中断方式:本代码采用定时器0,方式1.16位寄存器高八位低八位控制计算时间,根据中断次数完成定时。
  • 汇编第二节-寄存器

    2017-11-10 11:04:15
    AX{AH(高八位0),AL(低八位)} ;BX{BH,BL};同理; 2. 字在寄存器中的存储: 字节(byte):一个字节由8个bit组成,可以存在8位寄存器中。 字(word):一个字由两个字节组成,分为高位字节和低位字节。 ...
  • 寄存器(内存访问)

    2018-11-07 15:22:00
    高八位存放高位字节,低八位存放低位字节。在内存中存储时,由于内存单元时字节单元(一个单元存放一个字节),则一个字要用两个地址连续的内存单元来存放,这个字的低位字节存放在低地址单元中,高位字节存放在高...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 130
精华内容 52
关键字:

寄存器高八位低八位