【学习笔记】-汇编语言2

第二章:寄存器

按书中的描述都以16位的8086CPU1来说明知识点

需要了解的:

1.一个字由两个字节组成
2.十六进制数的一位相当于二进制数的四位,如0100111000100000可表示成:4(0100)、E(1110)、2(0010)、0(0000)四位十六进制数
3.为了区分,在十六进制表示的数据后面加H,在二进制标识的数据后面加B

以下是几条汇编指令

汇编指令控制CPU完成的操作用高级语言的语法描述
mov ax,18将18送入寄存器AXAX = 18
mov ah,78将78送入寄存器AHAH = 78
add ax,8将寄存器AX中的数值加上8AX = AX + 8
mov ax,bx将寄存器BX中的数据送入寄存器AXAX = BX
add ax,bx将AX和BX中的数值相加结果存入寄存器AXAX = AX + BX

寄存器可分割,比如一个16位的寄存器可分为两个可独立使用的8位寄存器使用

注意:若al(AX寄存器中的低位同样的ah为高位)中的数据在执行add加法后若‘溢出’,就会将最高位丢失(丢失指的是不能再8位寄存器中保存,但是CPU并不是真的丢失这个进位值)

关键点:

1.比如AX中的数据为00C5H,且有汇编指令add al,93H,此时al是作为一个独立的8位寄存器来使用的,和ah没有关系
2.在进行数据传送或运算时,指令的两个操作对象的位数应当是一致的,下面为错误实例

  • mov ax,bl (在8位和16位寄存器间传送数据)
    mov bh,ax (同上)
    mov al,20000 (8位寄存器最大可存放值为225的数据)
    add al,100H (将一个高于8位的数据加到一个8位寄存器中)

思考题:

  • [ ]最多使用4条汇编指令,计算2的4次方。

物理地址 = 段地址×16 + 偏移地址

小知识点:

  • 一个X进制的数据左移1位,相当于乘以X。
  • CPU可以用不同的短地址和偏移地址形成同一个物理地址
  • 偏移地址是16位,变化范围为0~FFFFH,仅使用偏移地址最多可寻64KB个内存单元
  • 段的意思不是实际分段,而是根据需要将地址连续、起始地址为16倍数的一组内存单元定义为一个段

检测点2.2 (P25)加深理解运用


CS和IP(都是寄存器)

CS是代码段寄存器
IP是指令指针寄存器
可理解为:CS中存放代码在内存中的起始地址,IP中存放确定的某一行代码的地址

读取一条指令后,IP中的值自动增加,以使CPU可以读取下一条指令。看当前读入的指令长度为几个字节IP中的值就加几。。。CS:IP可表示一个物理地址,计算方法为CS中的内容左移1位加IP中的内容

也就是说,内存中的一段信息曾被CPU执行过的话,那么它所在的内存单元必然被CS:IP指向过
----------------------------------------------------------------------------------
"jmp 某一合法寄存器"指令的功能为:用寄存器中的值修改IP
就这么想,IP中存放偏移地址,CS中存放段地址,这个jmp指令可想为在代码段中跳转到IP中存放的地址位置

CPU只认被CS:IP指向的内存单元中的内容为指令

8086CPU的工作过程:

1.从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
2.IP指向下一跳指令;
3.执行指令.(跳转到步骤1,重复这个过程)


  1. 运算器一次最多可处理16位数据;寄存器的最大宽度为16位;寄存器与运算器之间的通路为16位。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值