用汇编讲中断,反而更简单!中断到底是什么?来深入理解中断吧!

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 ธ.ค. 2024

ความคิดเห็น • 40

  • @m00iwi00m
    @m00iwi00m ปีที่แล้ว +3

    其實很簡單,中斷是一塊硬體電路,它的動作就是把PC(program counter)的值塞入堆疊器,堆疊器指針加一,PC被置入中斷的指向的地方,去了新的地址跑另外的一小段程式直到碰上中斷返回的指令,如8051的RETI,又觸發起動另外一塊硬體電路,它的動作是和上面的相反,從堆疊器取出最上面的值,就是剛進中斷時塞進去的哪個,堆疊器指針減一,用那個值把現有的PC值擠走,回去繼續跑原來中斷發生時被迫離開的那段程式.

  • @yjbooky6256
    @yjbooky6256 ปีที่แล้ว +2

    俺以前就是搞51单片机的,那时候还没有stc,用的是atmel的,后来今年才有的stc,说实话宏晶的处理器真的给力。已经十多年没干这行业了,也不知道发展的什么样子了。

    • @sharksonata203
      @sharksonata203 ปีที่แล้ว

      我15年就能买到STC的51单片机了😅

  • @Johnson-Young
    @Johnson-Young 9 หลายเดือนก่อน +1

    谢谢终于明白pc和dptr指针的区别了

  • @imsailorjames
    @imsailorjames ปีที่แล้ว +2

    6:45 发生中断后存入堆栈的不止有PC的值,通用寄存器的值也会被存到堆栈中。而且存储这些值的动作,准确的说,也不是由ALU完成的。因为ALU只负责算术和逻辑运算呐。

  • @USA52228
    @USA52228 ปีที่แล้ว

    你就是一位天才

  • @renandre7658
    @renandre7658 ปีที่แล้ว +2

    頻道講解的不會太複雜,又容易理解,對學習很有幫助

  • @Zanzara0403
    @Zanzara0403 ปีที่แล้ว

    講解得非常好 感謝分享

  • @imsailorjames
    @imsailorjames ปีที่แล้ว +2

    3:31 第二根红线的划线划错了位置,应该是划到EX1这一行

  • @hitsilent
    @hitsilent ปีที่แล้ว

    想听你说车的继电器RELAY , 30,85,86,87的意思。能安排上嘛

  • @dlfang
    @dlfang ปีที่แล้ว +1

    做的不错,虽然没都看懂但理解个7788,要是加个实验视频就更好了

  • @ooo6451
    @ooo6451 ปีที่แล้ว

    这解说是电脑合成音吗?声音好温柔噢。❤

  • @xzdemo1707
    @xzdemo1707 ปีที่แล้ว

    终于听懂了什么是中断

  • @lanruosi999
    @lanruosi999 ปีที่แล้ว

    請問在3:01的“程序計數器最多也就能控制64字節的存儲單元“,是最多能控制65536個字節吧!還是是控制64K個字節是這個意思嗎?謝謝。

    • @imsailorjames
      @imsailorjames ปีที่แล้ว

      65536B = 64KB的呀😂

    • @catchmeifucan777
      @catchmeifucan777 2 หลายเดือนก่อน

      ​@@imsailorjames 影片中只打 "64" 字節,少打 " k "

  • @吴伟-t4q
    @吴伟-t4q ปีที่แล้ว +1

    3:34 第二根红线画错了吧?

  • @SHULIN-rf6tr
    @SHULIN-rf6tr ปีที่แล้ว

    頭香 ❤姐姐的解說

    • @saitama3753
      @saitama3753 ปีที่แล้ว

      你给谁叫姐姐?给TTS程序吗?

  • @ericwang3213
    @ericwang3213 9 หลายเดือนก่อน

    ORG 00H 指令把PC设置成00H?ORG只是伪指令,和PC没有关系,只是指示编译程序下面的指令从什么地址开始存放。

  • @精神科医生项硕
    @精神科医生项硕 ปีที่แล้ว +1

    总觉得“地址译码器”的65535个连接不太现实,印刷电路不可能同时印刷65535根tracers。实际上应该是程序计数器里的数字作为获得内存RAM里下一句机器语言指令的内存地址直接去访问对应的内存地址。这是冯诺伊曼架构的精髓。

    • @gz6x
      @gz6x 6 หลายเดือนก่อน +1

      视频讲的原则上正确,但是实际上是通过多级地址译码器来避免排线太多的问题

  • @eir457882
    @eir457882 ปีที่แล้ว

    所謂地址譯碼器是真的有實體線路65536根嗎?

    • @arrive_at
      @arrive_at 8 หลายเดือนก่อน

      16根就可以了,每根有2种状态,2^16次方即可实现65536个地址的选择。

  • @ericwang3213
    @ericwang3213 9 หลายเดือนก่อน

    指令段中还有ORG 13H也是伪指令,没有指出。

  • @IMmilktea
    @IMmilktea ปีที่แล้ว

    如果我的前面不設迴圈的話
    會一直依序讀到13H發生中斷嗎?
    還是硬體不觸發低準位的話
    會直接跳過呢?跳過的機制原理又是怎樣呢?
    有點小疑惑

    • @LiuQixuan
      @LiuQixuan ปีที่แล้ว +1

      不会,中断是现象也是一种资源,中断程序预留的那一部分存储空间不会被一般程序调用(hack不算)。当然程序的执行也不是简单的12345按顺序执行。实际上是一段一段执行,然后由jump指令在不同段间调转,除了中断指令外,一般指令不能跳转到中断入口。

  • @Peter-r4h9q
    @Peter-r4h9q ปีที่แล้ว

    現在開始好奇單片機如何執行命令這件事了?

    • @dawn_sun_05
      @dawn_sun_05 10 หลายเดือนก่อน

      可以学习下计算机组成原理

  • @泰僧
    @泰僧 ปีที่แล้ว

    你谈谈电机改发电机吗?谢谢

  • @黃先生-d7o
    @黃先生-d7o ปีที่แล้ว

    Good~

  • @kienhoecheam
    @kienhoecheam ปีที่แล้ว +1

    4096下一个是8192,不是8182.

  • @tommymairo8964
    @tommymairo8964 ปีที่แล้ว

    如果中斷處理程序需要訪問 RAM,但是在處理中斷的時候又接收到了一個新中斷,中斷處理程序怎麼識別自己在第幾層中斷,從而不會吧上一層中斷的臨時數據當作自己的臨時數據😂

    • @xzdemo1707
      @xzdemo1707 ปีที่แล้ว

      一般一个 PC 有很多可以接收中断的IRQ线,是由操作系统调度的,此外中断也分不可被打断与可以被打断的。此外你说临时数据,这里我理解是上下文,切换线程时上下文会由操作系统保存/还原现场,所以中断本身,就跟普通程序一样,并不用关心

    • @tommymairo8964
      @tommymairo8964 ปีที่แล้ว

      @@xzdemo1707 但是這不是 PC 呀😅

    • @tommymairo8964
      @tommymairo8964 ปีที่แล้ว

      @@xzdemo1707 也沒有 OS 😅

    • @junelu3360
      @junelu3360 ปีที่แล้ว

      堆栈嘛,比如主程序A执行到a1位置,中断B触发,把a1放到堆栈里,执行到b1的时候中断C又触发了,把b1放到堆栈里。C结束以后,先把b1拿出来继续执行,如果B也结束了就把a1拿出来继续执行。堆栈是后进先出的。

    • @tommymairo8964
      @tommymairo8964 ปีที่แล้ว

      @@junelu3360 所以單片機也帶 sp 嗎🌝

  • @gaojianting
    @gaojianting ปีที่แล้ว

    可以學怎麼做電子雞嗎 XD 哈哈