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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

图解在emu8086中学习汇编语言数字比较程序

發布時間:2025/4/14 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图解在emu8086中学习汇编语言数字比较程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

打開emu8086,運行自帶實例,數字比較程序;運行情況如下;

程序如下;

? ? 此示例,前面是些cmp語句的用法示例;正式程序從 game: 標號開始;程序結構如下;

? ? msg1 定義字符串,提示用戶輸入一個字符;msg1后面是其他提示字符串定義;

? ? 調用 int 21h 的09號子功能,在屏幕顯示提示,讓用戶輸入一個字符串;

? ? 調用 int 21h 的01號子功能,從鍵盤讀入一個字符到al;

? ? 比較al 和 5,然后根據比較結果,分別執行 jb、ja,或執行 mov dx, offset equal_5;

? ? 在屏幕輸出比較結果;

? ? 等待輸入下一個字符;

?

? ? 下面先復習一下匯編CMP指令;

CMP(比較)指令執行從目的操作數中減去源操作數的隱含減法操作,并且不修改任何操作數:
CMP destination,source

標志位
當實際的減法發生時,CMP 指令按照計算結果修改溢出、符號、零、進位、輔助進位和奇偶標志位。

如果比較的是兩個無符號數,則零標志位和進位標志位表示的兩個操作數之間的關系如下:
? ? CMP結果? ? ? ? ? ? ? ? ? ? ? ? ZF ? ? ? CF
? ? 目的操作數 < 源操作數?? ?0? ? ? ? 1
? ? 目的操作數 > 源操作數?? ?0? ? ? ? 0
? ? 目的操作數 = 源操作數?? ?1? ? ? ? 0

CMP指令執行減法,不會改變源和目的操作數,影響標志位;

匯編cmp指令參閱此;

? ? ? ??http://c.biancheng.net/view/3561.html

?

在 070 行下一個斷點,從debug菜單執行 run until;

? ? 看一下此時,ah是前面語句設置的子功能號09,DX是msg1的偏移地址;

再往下,運行到需要鍵盤輸入字符時,停住如下;

?

輸入一個字符,比較后輸出結果;運行到 071 行又停住,等待再次輸入字符;

在 080 行下斷點,即選中 080 行,從debug菜單執行run until;輸入字符6,運行到80行停住,如下;

? ? 此時ah是01h,這是070行設置的子功能號,沒錯;

? ? al是36h;沒搞清,al此時我以為應該是從鍵盤讀入的6,應該是06h;

從新執行,斷在080行,鍵盤輸入8;此時al是38h,按程序來看應該是從鍵盤讀入的08h;

單步執行;運行到071行,此時進入dos系統空間,如下圖藍色選中片區所示,還未返回到用戶程序的 071 行;

? ? 此時al自己會變為24h;不知為何;此時鍵盤字符還未讀入到al;

? ? 這個好像是系統自己設置的;用戶程序不會用到;

重新執行;每次都是如此;這個al的24h可能是系統自己用的;

如果運行到067行,如下,已經從系統空間返回到用戶程序的067行;

? ? 此時ah是09h,是066行設置的子功能號,沒有問題;

? ? al是01h,最近一行影響到al的指令是060行,“mov al, 1”,把1放入al,沒有問題;

總結

以上是生活随笔為你收集整理的图解在emu8086中学习汇编语言数字比较程序的全部內容,希望文章能夠幫你解決所遇到的問題。

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