編寫一個程序,計算|X-Y|的值,并將結果存入RESULT單元中,其中X和Y都為帶符號字數據。
P154
例4.11
匯編思路:DATA段定義X、Y、RESULE分別用于存放隨機數、存放隨機數、存放最后計算結果。STACK段定義100DB大小的堆棧段運算存儲空間。將AX獲取到X的值,然后與Y進行CMP相減,判斷JNS的值,結果是正數還是負數,若為正數直接將AX的值賦值給RESULT,然后調用4CH號功能返回DOS系統;若是負數,需要將AX進行求補運算,獲得絕對值的結果,然后調用4CH號功能返回DOS系統。
匯編代碼:
DATA SEGMENT
X DW 10 ;隨機數存儲到X中
Y DW -14 ;隨機數存儲到X中
RESULE DW ? ;存放最后的結果
DATA ENDS
STACK SEGMENT STACKDB 100 DUP(?)
STACK ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK
STACK: MOV AX,DATAMOV DS,AXMOV AX,X ;X的內容賦值給AXSUB AX,Y ;進行判斷X-Y的SF符號位,1為負數,0位正數JNS DONE ;若SF符號位為0,即結果為正數,跳轉到DONE標簽處,否則結果為負數,執行下一條指令NEG AX ;執行到此條指令的時候,結果為負數,即SF=1,求補,即求絕對值
DONE: MOV RESULT,AX;將最后運算的結果賦值給RESULT單元MOV AX,4CH ;調用4CH號功能,返回DOS操作系統INT 21H ;終止當前程序的運行,并返回DOS系統
CODE ENDSEND START