汇编语言随笔(1)- 初步介绍和寄存器概览

        基于8086CPU汇编指令集,源于《汇编语言》第三版,王爽著

一:概述
汇编语言的指令组成

        1,汇编指令:机器码的助记符,有对应的机器码。
        2,伪指令:没有对应的机器码,由编译器来执行。
如:segment 和 ends、assume、end。
        3,其他符号:如+、-、*、/,由编译器识别,无对应的机器码。如:mov ax,2x8+9 等价于mov ax,25

CPU对数据的读写

        需进行三类信息的交互:
        1,存储单元的地址(地址信息)
        2,器件的选择,读或写的命令(控制信息)
        3,读或写的数据(数据信息)
        其中:宽度为16的地址总线寻址空间为2^16B即64KB大小。

8086CPU的结构

        8086CPU是16位机,它是16位结构的CPU。即:
        1,运算器一次最多可以处理16位的数据
        2,寄存器的最大宽度为16位
        3,寄存器和运算器之间的通路为16位
        但8086CPU有20位地址总线,即可传送20位地址,寻址能力为1MB。但其内部一次最多传输的地址信息为16位,所以其采用将两个16位地址合成的方法来形成20位的物理地址的方法进行寻址。这两个16位地址其中一个称为段地址,另一个称为偏移地址。实际物理地址的计算方式为:物理地址=段地址*16+偏移地址,当用16进制表示时,就是将段地址左移一位,再和偏移地址相加。在实际的内部处理中,只需将二进制信息左移4位即可,这和分页存储中内部计算物理地址的实现方式是相类似的。
        我们可以根据需要将若干连续的内存单元看作为一个段,用偏移地址定位其中的内存单元。注意:一个段的起始地址=段地址*16,故段起始地址必为16的倍数;由于16位的偏移地址的寻址能力为64KB,则一个段的最大长度为64KB。例:当段地址为0001H,CPU的寻址范围为00010H到1000FH。

二:寄存器

        8086cpu一共有14个寄存器,均为16位,可存放两个字节。具体如下:
        1,通用寄存器:AXBXCXDX,通常用来存放一般性的数据。
这四种寄存器都可以被分为两个独立的8位寄存器来使用,对应如下:
AH,AL       BH,BL       CH,CL       DH,DL。分别对应每一种通用寄存器的高8位(.H)和低8位(.L)。
        8位寄存器可存储数据范围:0-255(无符号原码)、-128-127(补码)。16位寄存器可存储的数据范围:0-65535(无符号原码)、-32768-32767(补码)
        若非注明,默认在寄存器和内存中均使用小端法来存储数据,即数据的低字节部分放在低地址的内存单元中。如数据4E20H在AX中的存放,是将4E放在AH中,将20放在AL中。

        2,段寄存器:CSDSSSES,用来存放段地址。其中CS是用来存放代码段地址的,DS是用来存放数据段地址的,SS是用来的存放栈段地址的,ES一般留做用户使用。
        3,偏移地址寄存器(自己定义的,不太标准):SIDIBP,这三个寄存器和通用寄存器BX常用来存储偏移地址。当采用组合方式出现时,只能是下面四种情况:bx和si,bx和di,bp和si,bp和di。当有存放偏移地址的bp寄存器出现时,默认的段地址存放在ss中。其余如si,di,bx,bx+si,bx+di默认对应的段寄存器为ds。
        4,指令指针寄存器IP,它和CS一起来使用定位指令的地址,记作CS:IP。在任意时刻,CPU将CS:IP指向的内容当作指令来执行。
        5,寄存器SP,它常和栈段地址寄存器SS一起使用,记作SS:SP,在任意时刻,SS:SP都指向栈顶元素。
        6,标志寄存器PSW,其中存储的信息被称为程序状态字(PSW),也可称为flag寄存器。它是按位起作用的,每一个标志位都有其特殊的含义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值