當前位置:編程學習大全網 - 編程語言 - 求壹段匯編程序,編制程序求壹組數據中的最大數和最小數及其存放地址 謝謝!!

求壹段匯編程序,編制程序求壹組數據中的最大數和最小數及其存放地址 謝謝!!

(25) 標號: MMS功能:求單字節十六進制有符號數據塊的極值

入口條件:數據塊的首址在DPTR中,數據個數在R7中。

出口信息:最大值在R6中, 地址在R2R3中;最小值在R7中,地址在R4R5中。

影響資源:PSW、A、B、R1~R7 堆棧需求: 4字節

MMS: MOV B,R7 ;保存數據個數

MOVX A,@DPTR ;讀取第壹個數據

MOV R6,A ;作為最大值的初始值

MOV R7,A ;也作為最小值的初始值

MOV A,DPL ;取第壹個數據的地址

MOV R3,A ;作為最大值存放地址的初始值

MOV R5,A ;也作為最小值存放地址的初始值

MOV A,DPH

MOV R2,A

MOV R4,A

MOV A,B ;取數據個數

DEC A ;減壹,得到需要比較的次數

JZ MMSE ;只有壹個數據,不需要比較

MOV R1,A ;保存比較次數

PUSH DPL ;保護數據塊的首址

PUSH DPH

MMS1: INC DPTR ;調整數據指針

MOVX A,@DPTR ;讀取壹個數據

MOV B,A ;保存

SETB C ;與最大值比較

SUBB A,R6

JZ MMS4 ;相同,不更新最大值

JNB OV,MMS2 ;差未溢出,符號位有效

CPL ACC.7 ;差溢出,符號位取反

MMS2: JB ACC.7,MMS4;差為負,不更新最大值

MOV R6,B ;更新最大值

MOV R2,DPH ;更新最大值存放地址

MOV R3,DPL

SJMP MMS7

MMS4: MOV A,B ;與最小值比較

CLR C

SUBB A,R7

JNB OV,MMS6 ;差未溢出,符號位有效

CPL ACC.7 ;差溢出,符號位取反

MMS6: JNB ACC.7,MMS7;差為正,不更新最小值

MOV R7,B ;更新最小值

MOV R4,DPH ;更新最小值存放地址

MOV R5,DPL

MMS7: DJNZ R1,MMS1 ;處理完全部數據

POP DPH ;恢復數據首址

POP DPL

MMSE: RET

  • 上一篇:建築工程實習心得體會範文2篇
  • 下一篇:高級工程師的個人總結
  • copyright 2024編程學習大全網