組合語言中out和in的用法,組合語言中OUT和IN的用法

2021-08-14 23:01:19 字數 2161 閱讀 9154

1樓:匿名使用者

在8086系列的組合語言中

in指令的意思是從埠中讀取資料,比如 in al,80h,將80h埠資料讀入到al中

out指令的意思是往埠輸出資料,比如 out 80h,al,將al輸出到80h埠

2樓:職場云云老師

組合語言中,cpu對外設的操作通過專門的埠讀寫指令來完成;

讀埠用in指令,寫埠用out指令。

例子如下:

in al,21h;表示從21h埠讀取一位元組資料到alin ax,21h;表示從埠地址21h讀取1位元組資料到al,從埠地址22h讀取1位元組到ah

mov dx,379h

in al,dx ;從埠379h讀取1位元組到alout 21h,al;將al的值寫入21h埠out 21h,ax;將ax的值寫入埠地址21h開始的連續兩個位元組。(port[21h]=al,port[22h]=ah)

mov dx,378h

out dx,ax ;將ah和al分別寫入埠379h和378h

3樓:

此指令可以這麼看

out 埠地址,要輸出的資料

這裡18h是十六進位制數18,81h表示埠號為十六進位制數81的埠;out 81h,al 中out是把al中資料送給81h埠。

組合語言中test的用法

4樓:蘇嘉愛娛樂

test對兩個引數(目標,源)執行and邏輯操作,並根據結果設定標誌暫存器,結果本身不會儲存。

test ax,bx 與 and ax,bx 命令有相同效果,只是test指令不改變ax和bx的內容,而and指令會把結果儲存到ax中。

test命令將兩個運算元進行邏輯與運算,並根據運算結果設定相關的標誌位。但是,test命令的兩個運算元不會被改變。運算結果在設定過相關標記位後會被丟棄。

est的一個非常普遍的用法是用來測試一方暫存器是否為空:test ecx, ecx jz somewhere,如果ecx為零,設定zf零標誌為1,jz跳轉。

擴充套件資料

pytest :

pytest 允許你在任何名為 test_*.py 的檔案中定義測試,並將其定義為以 test_* 開頭的函式。然後,pytest 將在整個專案中查詢所有測試,並在控制檯中執行 pytest 時自動執行這些測試。

pytest 接受標誌和引數 ,它們可以在測試執行器停止時更改,這些包含如何輸出結果,執行哪些測試以及輸出中包含哪些資訊。

它還包括一個 set_trace() 函式,它可以進入到你的測試中。它會暫停您的測試, 並允許你與變數進行互動,不然你只能在終端中「四處翻弄」來除錯你的專案。pytest 最好的一方面是其強大的外掛生態系統。

5樓:匿名使用者

為舉例方便說一下jnz和jz

測試條件

jz zf=1

jnz zf=0

即jz=jump if zero (結果為0則設定zf零標誌為1,跳轉)

jnz=jump if not zero

test屬於邏輯運算指令

功能: 執行bit與bit之間的邏輯運算

測試(兩運算元作與運算,僅修改標誌位,不回送結果).

test對兩個引數(目標,源)執行and邏輯操作,並根據結果設定標誌暫存器,結果本身不會儲存。test ax,bx 與 and ax,bx 命令有相同效果

語法: test r/m,r/m/data

影響標誌: c,o,p,z,s(其中c與o兩個標誌會被設為0)

運用舉例:

1.test用來測試一個位,例如暫存器:

test eax, 100b; b字尾意為二進位制

jnz ******; 如果eax右數第三個位為1,jnz將會跳轉

我是這樣想的,jnz跳轉的條件是zf=0,zf=0意味著zf(零標誌)沒被置位,即邏輯與結果為1.

2.test的一個非常普遍的用法是用來測試一方暫存器是否為空:

test ecx, ecx

jz somewhere

如果ecx為零,設定zf零標誌為1,jz跳轉

6樓:無地自容射手

組合語言中,test的用法你可以。到相關的組合語言的書裡進行了解

組合語言資料偽指令DUP用法,組合語言中的dup有什麼作用

10 dup 1 重複定義了10個字元素,初始值為1,佔用10 2 20個位元組。5 dup 重複定義了5個字元素 其初始值實際為0 佔用5 2 10個位元組 因此總共佔用30個位元組。具體分析 在彙編定義變數的時候會用到dup,變數名 型別 初值表,dup用於把一個相同值賦值若干次,重複次數 du...

什麼是組合語言,什麼是彙編和組合語言?

組合語言就是計算機語言,它是有0,1組成的.通俗的說就是我們人和計算機交流的語言.介於機器語言和高階語言之間的一種 什麼是彙編和組合語言?彙編語copy言是一種低階計算bai機程式語言,說 低階du 並不是指語言的功能和複雜程度,而是它zhi出現在計算機發展史dao的早期,但現在仍廣泛應用於計算機開...

組合語言中ADD加法指令的問題關於組合語言中ADD指令的問題

1.0ac72h只是一個表示方法,跟ac72h是一樣的含義。ax裡還是儲存16位的值。之所以在前面多加一個0,是因為編譯器不識別以字母開頭的立即數。算是立即數表示的一種規則吧,或者可以理解為是一種語法規則。只要是十六進位制數的 最後加h 首位又是字母的,必須前面新增個0。這樣也不容易引起歧義。如果不...