计算机原理转移指令题,转移指令计算机原理.pdf
轉移指令計算機原理.pdf
3.3.5 程序控制指令程序控制指令 程序控制指令又稱為控制轉移指令,包括轉移指令、循環控制指令、過程調用指令和 中斷指令 4 類。轉移指令又分為無條件轉移指令和條件轉移指令。 1無條件轉移指令無條件轉移指令 JMP 計算機程序的執行完全按照 CSIP 的指向執行指令。通常情況下 CS 保持不變,IP 自動 增量,程序就按照指令的先后順序執行。無條件轉移指令會修改 CS 和 IP 的值,使程序跳 轉到另一個位置去執行,改變指令的執行順序。 根據程序的轉移范圍可分為段內轉移和段間轉移。 在同一段的范圍之內進行轉移, 只需 要修改 IP 的值, 稱為段內轉移。 如果 CS 的值被修改, 意味著程序將轉移到另外的段去執行, 這稱為段間轉移。段間轉移不僅修改段基址CS 的值,還修改 IP 的值。 JMP 指令不影響標志位。 (1)段內轉移 指令格式 JMP OPRD 功能段內轉移,IP IP位移量,或給 IP 賦值。 說明根據 OPRD 的類型又分為段內直接轉移和段內間接轉移。指令不影響標志位。 例如 JMP LABEL ;LABEL 為指令標號 JMP SHORT LABEL JMP NEAR LABEL JMP BX JMP WORD PTRBXDI JMP LABEL,程序轉移到 LABEL 指明的指令處繼續執行。指令中 LABEL 通常為標號, 例如【例題 3-17】程序段中的 FOUND 和 DONE。 JMP SHORT LABEL, 程序轉移到 LABEL指明的指令處繼續執行。 SHORT 為屬性說明符, 說明轉移范圍,以當前 IP 為中心,轉移范圍-128127。 JMP NEAR LABEL,程序轉移到 LABEL 指明的指令處繼續執行。NEAR 為屬性說明符, 說明轉移范圍,以當前 IP 為中心,轉移范圍-3276832767。 說明在編程時 NEAR 與 SHORT 通常省略,編譯時由匯編程序自己計算。如果用了 NEAR 或 SHORT,在編譯時有時會提示不正確的屬性限制。所以 JMP LABEL 是最常見 的形式。 由于 LABEL 對應一條指令,是這條指令的符號地址,所以以上三種 JMP 形式又稱為 段內直接轉移。這些指令在編譯時,匯編程序會計算出它的下一條指令到 LABEL 指明的指 令之間的位移量(相距多少字節) ,將這個位移量編譯為 JMP 的操作數。指令執行時 IP 加 上這個位移量 (JMP 指令的功能) , IP 的值被修改, 使得下一條要執行的指令指向 LABEL。 JMP BX,將 BX 的值傳送給 IP,程序轉移到 CSIP 處繼續執行。操作數可以是所有 16 位 通用寄存器。 JMP WORD PTRBXDI,從BXDI指明的內存區域連續取出兩個字節傳送給 IP,程序轉 移到 CSIP 處繼續執行。操作數可以采用各種尋址方式。 以上兩種 JMP 形式又稱為段內間接轉移,編程時要注意操作數必須是 16 位。 【例題 3-17】 MOV DI, 0 JMP DONE FOUND DEC DI DONE MOV POINT, DI MOV AX,1234H JMP CX ;IP2000H,程序跳轉到段內偏移地址為 2000H 處 (2)段間轉移 指令格式 JMP OPRD 功能段間轉移,IPOPRD 的段內偏移地址,CSOPRD 所在段的段基址。 說明根據 OPRD 的類型又分為段間直接轉移和段間間接轉移。指令不影響標志位。 例如 JMP FAR LABEL JMP DWORD PTR BXDI JMP FAR LABEL ,程序轉移到 LABEL 指明的指令處繼續執行,LABEL 為標號。FAR 是 相對于 NEAR 的屬性說明符,FAR 說明標號 LABEL 在另外的代碼段,與 JMP 指 令本身不在同一段。 這條指令執行的操作是 IPLABEL 的偏移地址, CSLABEL 所在段的段基址,程序轉移到 CSIP 處繼續執行。這種 JMP 形式又稱為段間直接轉 移。 JMP DWORD PTRBXDI, 從BXDI指明的內存區域連續取出 4 個字節, 前兩個字節 (低 地址)傳送給 IP,后兩個字節送給 CS,程序轉移到 CSIP 處繼續執行。操作數屬 于存儲器操作數,可以采用各種存儲器的尋址方式。這種 JMP 形式又稱為段間間 接轉移。 例如 JMP FAR NEXT JMP 80002000H JMP DWORD PTR DI 2條件轉移指令條件轉移指令 條件轉移指令先測試條件, 若條件成立則執行轉移操作; 若不成立則不轉移并順序執行 下一條指令。所有的條件轉移指令轉移范圍-128127,屬于段內短轉移,都不影響狀態標 志位。 指令格式 JCC OPRD 功能若條件成立則轉移到 OPRD 處執行,IP IP位移量。 說明J 是 JUMP 的縮寫,CC 表示轉移的條件,OPRD 通常是標號。 表 3-1 條件轉移指令 指令名稱 匯編格式 轉移條件 功能說明 進位轉移 JC target CF1 有進位或借位 無進位轉移 JNC target CF0 無進位或借位 等于或為零轉移 JE/JZ target ZF1 相等或結果為 0 不等于或非零轉移 JNE/JNZ target ZF0 不相等或結果不為 0 奇偶校驗為偶轉移 JP/JPE target PF1 有偶數個 1 奇偶校驗為奇轉移 JP/JPO target PE0 有奇數個 1 結果為負轉移 JS target SF1 為負數 結果為正轉移 JNS target SF0 為正數 溢出轉移 JO target OF1 溢出 不溢出轉移 JNO target OF0 不溢出 大于則轉移 JA/JNBE target CF0 且ZF0 無符號數 大于或等于則轉移 JAE/JNB target CF0 無符號數 小于則轉移 JB/JNAE target CF1 無符號數 小于或等于則轉移 JBE/JNA target CF1 或ZF1 無符號數 大于則轉移 JG/JNLE target SFOF且ZF0 帶符號數 大于或等于則轉移 JGE/JNL target SFOF 帶符號數 小于則轉移 JL/JNGE target SFOF且ZF0 帶符號數 小于或等于則轉移 JLE/JNG target SFOF或ZF1 帶符號數 CX內容為0轉移 JCXZ target CX0 【例題 3-18】測試 AX 為奇數還是偶數,如是奇數則 BX 置成 0FFFFH;如是偶數 BX 置 成 0。 TEST AX, 01H ;測試 BX 中最低位的邏輯值 JZ EVEN ;ZF1,AX 為偶數轉移至 EVEN 處執行 MOV BX, 0FFFFH ;AX 為奇數,設置奇數標志 JMP CON EVEN MOV BX,0 ;設置偶數標志 CON 【例題 3-19】 AX 與 BX 均為無符號數,測試 AX 與 BX 的大小 CMP AX, BX ;比較 AX 與 BX JZ EQUAL ;AXBX 則轉移到 EQUAL 處 JA LAG ;AXBX,則轉至 LAG 處 JMP CON ;AXBX,轉移至 CON 處 EQUAL MOV CX, 0 ;置等于標志 LAG MOV CX, 0FFFFH ;置大于標志 CON
總結
以上是生活随笔為你收集整理的计算机原理转移指令题,转移指令计算机原理.pdf的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql架构深入_mysql性能优化2
- 下一篇: inputstream 初始化_如何完美