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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Intel汇编语言程序设计学习-第六章 条件处理-下

發布時間:2025/6/17 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Intel汇编语言程序设计学习-第六章 条件处理-下 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

6.6 ?應用:有限狀態機

? ? 這個東西說了半天,感覺就是把邏輯弄得跟有向圖一樣,沒看出來什么高端的東西,下面就整理下書上說的概念:

有限狀態機(FSMFinite-State Machine)是依據輸入改變狀態機器或程序。使用圖來表示一個有限狀態機是非常簡單的,圖種方塊(或原)稱為節點,節點之間帶箭頭的線稱為邊(edge)或弧(arc)。

?

6.6.1 ?輸入字符串的驗證

? ? 讀取輸入流程的程序通常必須執行一定的錯誤檢查步驟以驗證輸入。比如我們定義如下幾條規則:

1.字符串必須以字母x開始,以字母z結束。

2.在第一個和最后一個字符之間,可以有0或多個字符,但字符必須在范圍{‘a’~’y’}之內。

?

6.6.2 ?有符號整數的驗證

?

? ? 有限狀態機很容易翻譯成匯編代碼。圖中的每個狀態(A,B,C...)都由程序中一個標號標識,各標號處執行以下動作:

? ? A:調用輸入過程,從輸入中讀取下一個字符。

? ? B:如果是終結狀態,則檢查用戶是否輸入了回車結束輸入。

? ? C:使用一條或多條比較指令檢查從當前狀態到其他狀態的可能轉換,每條比較指令后面都緊跟一條跳轉指令。

????實現下上面的那和輸入檢測:

TITLE Finite State Machine ?(Finite.asm)

INCLUDE Irvine32.inc

ENTER_KEY = 13

.data

InvalidinputMsg BYTE "Invalid input" ,13 ,10 ,0

.code

main PROC

????call Clrscr

StateA:

????call Getnext

cmp ?al ,'+'

je ??StateB

cmp ?al ,'-'

je ??StateB

call IsDigit

jz ??StateC

call DisplayErrorMsg

jmp ?Quit

StateB:

????call Getnext

call IsDigit

jz ??StateC

call DisplayErrorMsg

jmp ?Quit

StateC:

????call Getnext

call IsDigit

jz ??StateC

cmp ?al ,ENTER_KEY

je ??Quit

call DisplayErrorMsg

jmp ?Quit

Quit:

????call ?Crlf

exit

main ENDP

?

;--------------------------------

Getnext PROC

;

;Read a character from standard input.

;Receives : nothing

;Returns ?: nothing

;--------------------------------

????call ReadChar

call WriteChar

ret

Getnext ENDP

?

;--------------------------------

DisPlayErrorMsg PROC

;Display an error message indicating that

;the input stream contains illegal input.

;Receives : nothing

;Returns ?: nothing

;--------------------------------

????push ?edx

mov ??edx ,OFFSET InvalidInputMsg

call ?WriteString

pop ??edx

ret

DisPlayErrorMsg ?ENDP

END main

?

對應的流程圖:

?

6.7 ?決策偽指令

? ? MASM的決策偽指令{.IF .ELSE .ELSEIF .ENDIF}使得在編寫涉及到多路分支邏輯的代碼時更加容易。匯編器在幕后為這些偽指令自動生成CMP和條件跳轉指令。

.IF condition1

????statements

[.ELSEIF condition2

????statements ]

[.ELSE

????statements ]

.ENDIF

? ? 方括號是是可選部分,但是.IF.ENDIF是必須的。可支持的關系運算符如下:


6.7.1 ?有符號比較和無符號比較

? ? 這一節想表達的意思是.IF...比較有符號和無符號的時候,匯編器最后翻譯的代碼是不一樣的。這個很好理解 比如 JA JB 對應的是 JG JL等等。

6.7.2 ?復合表達式

? ? 這一節是說.IF等可以直接使用 && || ..等邏輯算數符,和高級語言一樣。

6.7.3 ?.REPEAT.WHILE偽指令

.WHILE C++等語言里的while差不多,格式是這樣

.WHILE??condition

statements

.ENDW

.REPEAT則類似 DO...WHILE格式是這樣:

.REPEAT

????statements

.UNTILE condition


? ? 寫個小例子,計算數組中大于等于4小于6的所有數之和:

剛開始寫這個簡答的小程序的時候有個小插曲,

.IF [esi] >= 4 的地方編譯不過去,然后 .IF DWORD PTR[esi]可以編譯過去,但是add eax ,[esi]卻可以,woc我突然忘記怎么遍歷數組了。于是就又查了之前的筆記,下面我用三種方式實現(為了練習):

1.

TITLE Finite State Machine ?(Finite.asm)

INCLUDE Irvine32.inc

ENTER_KEY = 13

.data

intArray DWORD 1,2,3,4,5,6,7,8,9,10

.code

main PROC

????mov esi ,OFFSET intArray

mov edx ,0

mov eax ,0

.WHILE edx < 10

????.IF DWORD PTR [esi] >=4 && DWORD PTR[esi] < 6

????????add eax ,DWORD PTR [esi]

.ENDIF

add edx ,1

add esi ,TYPE DWORD

???.ENDW

???call WriteInt

exit

main ENDP

END main

?

2.

TITLE Finite State Machine ?(Finite.asm)

INCLUDE Irvine32.inc

ENTER_KEY = 13

.data

intArray DWORD 1,2,3,4,5,6,7,8,9,10

.code

main PROC

????mov esi ,OFFSET intArray

mov edx ,0

mov eax ,0

.WHILE edx < 10

????.IF ?DWORD PTR[esi] >=4 && DWORD PTR[esi] < 6

????????add eax ,[esi]

.ENDIF

add edx ,1

add esi ,TYPE DWORD

???.ENDW

???call WriteInt

exit

main ENDP

END main

3.

TITLE Finite State Machine ?(Finite.asm)

INCLUDE Irvine32.inc

ENTER_KEY = 13

.data

intArray DWORD 1,2,3,4,5,6,7,8,9,10

.code

main PROC

????mov esi ,0

mov edx ,0

mov eax ,0

.WHILE edx < 10

????.IF ?intArray[esi] >=4 && intArray[esi] < 6

????????add eax ,intArray[esi]

???.ENDIF

???add edx ,1

???add esi ,TYPE DWORD

???.ENDW

???call WriteInt

exit

main ENDP

END main

?

?

?

?

運行結果:(第三種)

?

6.8本章小結

? ? 我沒有必要去總結書上的總結,還是直接粘貼過來:


?


?

?

?

?

?

總結

以上是生活随笔為你收集整理的Intel汇编语言程序设计学习-第六章 条件处理-下的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久草国产精品视频 | 久久久无码人妻精品无码 | 亚洲 欧美 激情 小说 另类 | 亚洲综合久久av一区二区三区 | 欧美三级电影在线观看 | 两根大肉大捧一进一出好爽视频 | 黄色片免费的 | 午夜av福利 | 国产又粗又猛又爽又黄又 | 亚洲精品久久久久久久久久 | 精品久久久久久久久久久 | 日韩一区二区三区免费视频 | 欧美三级视频网站 | 日韩精品无码一区二区三区 | 性爱一级视频 | 在线免费日韩av | 亚洲高清视频在线播放 | 精品视频久久久 | 日韩成人免费在线 | 天堂久久网 | 精品国产三级 | 日韩av电影手机在线观看 | 午夜美女视频 | 美女洗澡无遮挡 | 日韩免费观看av | 免费爱爱视频 | 老熟妇高潮一区二区高清视频 | 欧美一区二区三区不卡视频 | 中文人妻熟妇乱又伦精品 | 国产激情自拍 | 日韩一级片免费 | 欧美日韩中文一区 | 成人欧美一区二区三区在线播放 | 日美韩一区二区三区 | 中文字幕免费高清在线观看 | avwww| 国产一级特黄毛片 | 大桥未久恸哭の女教师 | 婷婷综合另类小说色区 | av免费片 | 婷婷爱五月 | 右手影院亚洲欧美 | 久久精品无码一区二区三区 | 日本xx视频 | 韩国女主播一区二区 | 日韩激情小视频 | 人人爱人人插 | 成年人看的免费视频 | 国产精品有限公司 | 在线视频观看免费 | 亚洲一区二区观看 | 伊人色婷婷 | 尤物国产在线 | 99ri视频| 一级片视频网站 | 午夜a区| 无码gogo大胆啪啪艺术 | 综合久久激情 | 亚洲综合色自拍一区 | 黄色成人一级片 | 成人av网站在线播放 | 日韩怡春院 | 黄色动漫软件 | 国产毛片在线看 | 成人在线观看a | 亚洲天堂美女视频 | 特黄视频免费看 | 亚洲黄色av | 都市激情校园春色 | 九九热视频在线观看 | 久久综合99| 色乱码一区二区三区 | 国产成人自拍在线 | 一级片小视频 | 欧美成人激情在线 | 狠狠操av| 91蜜臀精品国产自偷在线 | 亚洲影院在线 | 精品人妻午夜一区二区三区四区 | 国产不卡一区二区视频 | 亚洲天堂av女优 | 天天高潮夜夜爽 | 欧美三级小视频 | 老妇裸体性激交老太视频 | 色欲色香天天天综合网www | 国产探花一区二区三区 | 亚洲av成人无码一二三在线观看 | 91美女在线 | 亚洲伊人久久久 | 色老久久| 女人黄色片 | 日日操网站 | 欧美日韩国 | 国产成人精品999在线观看 | 中国免费毛片 | 伊人五月综合 | 亚洲一区精品视频 | 久久午夜无码鲁丝片 | 日韩视频网 |