回覆列表
  • 1 # 使用者8192627547237

    code segment assume cs:codestart: mov ax,0ffffh ;測試用的,你可以修改為任何有效的值 mov cl,16 ;ax是一個字,有16位二進位制 mov dl,0 ;用於累加ax中1的個數a: rol ax,1 ;迴圈左移1稱,16次迴圈後復原 jnc next ;該位是0,則CF=0,這裡就是測試CF的值,為0則跳轉不累加 inc dl ;CF=1時,dl+1next: loop a ;迴圈結構 add dl,30h ;將dl的值轉為ASCII碼 cmp dl,"9" ;大於9則是A-F或者10 jbe print ;小於或者等於0則不必再轉化ASCII碼 add dl,7 ;如果是A-F則轉化 cmp dl,"F" ;這步關鍵,如果AX的值是0FFFFH,則dl=16=10H,沒有這步將會輸出G ja print_10 ;AX=0FFFFH則跳轉進行特殊處理print: mov ah,02h int 21hprint_10: mov dl,31h ;特殊情況只有一種,即dl=10H,故只要兩次分別輸出字元1和0即可 mov ah,02h int 21h mov dl,30h int 21h mov ah,4ch int 21hcode ends end start

  • 中秋節和大豐收的關聯?
  • 生薑泡腳出汗怎麼回事?