汇编-简单的条件转移指令应用-附例子:判断坐标所在象限
生活随笔
收集整理的這篇文章主要介紹了
汇编-简单的条件转移指令应用-附例子:判断坐标所在象限
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在匯編分支程序設(shè)計中,條件轉(zhuǎn)移指令扮演著很重要的角色
首先讓我們認(rèn)識一下簡單的條件轉(zhuǎn)移指令:
這些指令都是通過flag寄存器中的標(biāo)志位進(jìn)行判斷的
一般情況下使用CMP指令來影響標(biāo)志位結(jié)合這些指令執(zhí)行
相當(dāng)于高級語言的if,else
如圖:
例題:
做出分析:
主要是判斷是否為0,以及它的正負(fù)情況。
所以:
主要應(yīng)用條件轉(zhuǎn)移指令,判斷不同象限,主要指令:JZ/JE,JNS/JS,JMP
假設(shè):
為方便查看結(jié)果,可將K輸出為對應(yīng)的ascll字符,既是48到52,達(dá)到k=i的顯示效果
那么代碼部分:
數(shù)據(jù)段:
判斷坐標(biāo)位置的子過程:
輸出象限子過程:
print:;輸出象限與回車MOV DX,OFFSET KMOV K[1],'$'MOV AH,09HINT 21HMOV AH,02HMOV DL,0AHINT 21H RET主過程:
STRAT:MOV AX,DATAMOV DS,AX;原點(0,0)CALL judgement;給出正負(fù)MOV CX,5MOV BX,0FFF5H;1象限(5,5)MOV X,CXMOV Y,CXCALL judgement;2象限(-5,5)MOV X,BXCALL judgement;3象限(-5,-5)MOV Y,BXCALL judgement;4象限(5,-5)MOV X,CXCALL judgementMOV AH,4CHINT 21H可以得到結(jié)果:
完整源代碼:
;@author:joker ;@date: 2020-5-11 ;@description: 第十次作業(yè)第一題;判斷象限和坐標(biāo)軸;以ascll碼為k=i;x,y為原點與4個象限坐標(biāo),自動擴(kuò)展為字變量 DATA SEGMENTX DW 0H;橫坐標(biāo)Y DW 0H;縱坐標(biāo)K DB 0H;象限i的ascll碼 DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA print:;輸出象限與回車MOV DX,OFFSET KMOV K[1],'$'MOV AH,09HINT 21HMOV AH,02HMOV DL,0AHINT 21H RET judgement:;判斷X,Y;X或者Y為0,為坐標(biāo)軸一點CMP X,0JZ TO_XYCMP Y,0JZ TO_XY;為象限上一點CMP X,0;X>0時,在1,4JNS TO_14;JS TO_23;X<0時,在2,3CMP Y,0;第2象限JNS TO_2;第3象限MOV K ,51JMP BREAKTO_14:CMP Y,0;第1象限JNS TO_1;第4象限MOV K ,52JMP BREAK;跳轉(zhuǎn)到0,代表坐標(biāo)軸TO_XY:MOV K ,48JMP BREAK;第1象限TO_1:MOV K ,49JMP BREAK;第2象限TO_2:MOV K ,50JMP BREAKBREAK: CALL print RET STRAT:MOV AX,DATAMOV DS,AX;原點(0,0)CALL judgement;給出正負(fù)MOV CX,5MOV BX,0FFF5H;1象限(5,5)MOV X,CXMOV Y,CXCALL judgement;2象限(-5,5)MOV X,BXCALL judgement;3象限(-5,-5)MOV Y,BXCALL judgement;4象限(5,-5)MOV X,CXCALL judgementMOV AH,4CHINT 21HCODE ENDS END STRAT完。
加油!相信自己!
提示:代碼雖好,但步驟同樣重要,動手更重要!
總結(jié)
以上是生活随笔為你收集整理的汇编-简单的条件转移指令应用-附例子:判断坐标所在象限的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编-debug结果正确与执行结果错误
- 下一篇: java-初识JVM的内存分配(5个区域