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。這樣也不容易引起歧義。如果不...