1. 程式人生 > >匯編第二章梳理(期末復習)

匯編第二章梳理(期末復習)

以及 一次 字節 理解 匯編指令 例如 文章 梳理 字長

  (留著幾個課後任務沒寫,臨近學期末,全當復習了。因為是為復習用的,所以文章比較自閉,)

  第二章標題叫寄存器,那麽大概就是講和寄存器有關的東西,準確說是單純寄存器之間操作,還有 debug 的操作(在實驗部分)。

  8086有14個寄存器,AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。這些寄存器都是16位的,可以存放兩個字節。其中,AX,BX,CX,DX 用來存放一般的數據,為通用寄存器。為了兼容性,這四個寄存器分別可以拆分為兩個8位寄存器獨立使用。高位字節為h,低位字節叫L,如:ah,al 。

  這章介紹了兩條匯編指令:mov,add,以及加法進位溢出的情況。兩條指令不需多講,加法溢出的情況,發生在兩個數相加產生進位的時候。例如,mov ax,8000h,add ax,9000h ,這會發生溢出的情況,最後 ax 的值為1000h。(後面知道這個進位在標誌寄存器CF中。)

  之後講了8086內部地址的計算。由於8086字長16位,而地址總線卻有20位。為了能夠表示20位的地址,人為作了如下約定:段地址*16+偏移地址=物理地址。也就是說,通過兩個16位的地址來合成一個20位的物理地址。段地址,可以理解為某一段內存空間的起始地址;偏移地址可以當作是相對於段地址距離為偏移量的地址。

  除了有通用寄存器,還有段寄存器。段寄存器顧名思義用於存儲段地址的寄存器,按段的功能分為:cs,ss,ds,es 四個。cs 為代碼段寄存器,ss 為棧段寄存器,ds 為數據段寄存器,es 為附加段寄存器。前兩個還配有一個記錄偏移量的寄存器,分別為 ip,sp。對於段寄存器,我們不能直接對其賦值,只能通過通用寄存器中轉的方式間接賦值。例如 mov ax,2000h , mov cs,ax 。 再者就是用 jmp 無條件跳轉指令,例如jmp 2000:10 。

  debug 的操作在實驗文章中有一次詳細介紹,這裏就不再說了。

  以上為第二章大致內容。

匯編第二章梳理(期末復習)