有勇气的牛排博客

汇编 端口 shl和shr指令

有勇气的牛排 995 网络、逆向、汇编 2021-07-11 00:04:49

1 端口

CPU可以直接读写以下3个地方的数据:

  • CPU内部的寄存器
  • 内存单元
  • 端口

1.1 端口的读写

  1. 解决了串/并行 改变的问题

  2. 对端口的读写不能用mov,push,pop等;只有inout

  3. 访问端口:

    in al,60h ;从60h号端口读入一个字节
  4. 0~255以内的端口进行读写时:

    in al,20h ;20h端口读入一个字节 out 20h,al ;往20h端口写入一个字节

    256~65535 的端口进行读写时,端口号放在dx

    mov dx,3f8h ;将端口号3f8h送入dx in al,dx ;从3f8h端口 读入 一个字节 out dx,al ;向3f8h端口 写入 一个字节

1.2 CMOS RAM芯片

  1. 用途:写时间,时间错误时,计算机不工作。
  2. 地址端口:70h
    数据端口:71h

1.3 shl 和 shr 指令

  1. 定义:是逻辑移位指令

  2. shl:是左移指令
    (1)将一个寄存器或寄存单元中的数据向左移位。
    (2)将最后移除的移位写入CF中。
    (3)最低位用0补充。
    eg.

    指令: mov al, 01001000b shl al,1 ;将al中的数据左移一位 执行后:(al)=10010000b CF=0 (1)左移 原数据: 01001000 左移后: 01001000 (2)将最后移除的移位写入CF中 原数据: 01001000 左移后: 1001000 CF=0 (3)最低位用0补充 原数据: 01001000 左移后: 10010000
  3. shr逻辑右移指令,它和shl所进行的操作刚好相反
    (1) 将一个寄存器or内存单元中的数据向右移位。
    (2)将最后移出的一位写入CF中。
    (3)最高位用0补充。


留言

专栏
文章
加入群聊