匯編語言尋找最大數(有/無符號,最大/最小)


在DATA1開始的存儲區中存放了100個8位無符號數,找出其中最大數存放入MAX單元中

	MOV BX,OFFISET DATA1 		;取得DATA1的偏移地址
	MOV AX,[BX]			;給AX賦一個初值 用於最開始的比較
	MVO CX,93H			;計數順序
P1:	INC BX				;指向下一個數
	CMP AX,[BX]			;比較兩個數
	JAE NEXT			;無符號數條件轉移(AX>=BX)發生轉移
	MOV AX,[BX]			;JAE未發生跳轉說明AX<BX 把較大的[BX]賦值給AX
NEXT:	DEC CX				;計數器減一
	JNZ PI				;判斷 計數器是否到0
	MOV MAX,AL			;大功告成復制
	HLT

如果題目中將100個改成200個我們只需要修改CX計數器的值改為C7(199)就ok

如果題目中將大於改成小於 MAX改為MIN我們只需要將JAE改為JB即可

如果題目中說存放的是有符號數的話,我們只需要使用帶符號的比較指令就可以輕松完成

JGE 有符號轉移指令 目的操作數>=原操作數 發生轉移

CMP AX,BX
JGE NEXT	;AX>=BX 發生轉移

JL 目的操作數 < 原操作數發生轉移

MOV AX,BX
JL NEXT  ;AX<BX 發生轉移

附: 跳轉指令規則快速記憶表
無符號

J A B E N
JMP 大於 小於 等於 取反

例子 JAE

CMP AX,BX
JAE NEXT  ;AX>=BX 發送跳轉

有符號

J G L E N
JMP 大於 小於 等於 取反


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM