日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

80x86汇编按二进制输出数字的程序图解和代码解释

發布時間:2025/4/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 80x86汇编按二进制输出数字的程序图解和代码解释 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先運行一下;

按二進制輸出了十六進制的07h;

十六進制07,?

轉換為二進制是 111;4 + 2 + 1 = 7;?

; print result in binary: mov bl, 09h mov cx, 8 print: mov ah, 2mov dl, '0'test bl, 10000000b; test first bit.jz zeromov dl, '1' zero: int 21hshl bl, 1 loop print ; print binary suffix: mov dl, 'b' int 21h

?首先把要輸出的數字放入bl;

把8放入cx,這個是循環次數;8位二進制數字每次輸出一個;

把2放入ah,

int 21h,ah = 02 子功能,其功能是顯示輸出,要輸出的字符放在dl寄存器中;
把 0 放入 dl;

比較bl和二進制的 10000000;

如果為零,跳到 zero 處;

如果非零,把 1 放入 dl;

這樣就把每次要輸出的1或0放入了dl;

?

匯編test指令:

Test命令將兩個操作數進行邏輯與運算,并根據運算結果設置相關的標志位。

Test命令的兩個操作數不會被改變。

Test對兩個參數(目標,源)執行AND邏輯操作,并根據結果設置標志寄存器,結果本身不會保存。
TEST AX,BX 與 AND AX,BX 命令有相同效果,只是Test指令不改變AX和BX的內容,而AND指令會把結果保存到AX中。

?

intel對test指令的描述如下:

TEMP ←SRC1 AND SRC2;
  SF ←MSB(TEMP);
IF TEMP = 0
  THEN ZF ←1;
  ELSE ZF ←0;
  FI:
  
  PF ←BitwiseXNOR(TEMP[0:7]);
  CF ←0;
  OF ←0;
  (* AF is undefined *)


test運用舉例
1.
test eax,100b;b后綴意為二進制
jnz ******;如果eax右數第三個位為1,jnz將會跳轉

2.Test的一個非常普遍的用法是用來測試一方寄存器是否為空:
test ecx, ecx
jz somewhere
如果ecx為零,設置ZF零標志為1,jz跳轉。

test后一般跟跳轉指令;

?

然后執行 int 21h,輸出了dl中的字符;

然后把bl內容左移一位;下次循環測試下一位是輸出1還是0;

?

匯編shl指令:

SHL是一個匯編指令,作用是邏輯左移指令,將目的操作數順序左移1位或CL寄存器中指定的位數。左移一位時,操作數的最高位移入進位標志位CF,最低位補零。

?

如此循環8次,輸出每一位的1或0;

最后把字符'b'放入dl,輸出此字符,二進制的結尾標志;

?

再輸出一次;

十六進制9;

轉換為二進制是1001; 2^3=8, 8+1=9;?

看一下輸出結果,沒有錯;?

?

總結

以上是生活随笔為你收集整理的80x86汇编按二进制输出数字的程序图解和代码解释的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。