0100 SP AX=1234BX=5678 SP=
5.2 Ưùng dúng cụa stack
BởivìnguyeđntaĩclàmvieơccụastacklàLIFOneđncácđôitượngđượclâyra khỏistackcótraơttự ngượcláivớitraơttựmàchúngđược đưavàostack .Chương trình sauđađysẽ đĩcmoơtchuoêikýtự roăi inchúngtređndòng mớivớitraơttựngược lái.
Thuaơttoán chochươngtrìnhnhưsau: Displaya‘?’
Initializecountto0 Read acharacter
WHILE characterisnotCR DO PUSH chracterontostack Incremetcount
Readacharacter END_WHILE;
Gotoanewline FORcounttimesDO
POPachracterfromthestack Displayit;
END_FOR
Chương 5 : Ngaín xêp và thụ túc 61 Sauđađylàchươngtrình:
TITLE PGM5-1:REVERSEINPUT .MODEL SMALL .STACK 100H .CODE MAIN PROC ;indâunhaĩc MOV AH,2 MOV DL,’?’ INT 21H ;xoábiênđêmCX
XOR CX,CX ;đĩc1kýtự
MOV AH,1 INT 21H
;Trongkhi characterkhođngphạilàCR WHILE_:
CMP AL,0DH JE END_WHILE
;câtALvào stacktaíngbiênđêm PUSH AX ;đaơy AXvàostack INC CX ;taíng CX ;đĩc1kýtự INT 21h JMP WHILE_ END_WHILE: ;Xuôngdòngmới MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H
JCXZ EXIT ;thoátnêuCX=0(khođngcókýtựnàođược nhaơp) ;laịpCXlaăn TOP: ;lâykýtựtừstack POP DX ;xuâtnó INT 21H
LOOP TOP ;laịpnêuCX>0
Chương 5 : Ngaín xêp và thụ túc 62 ;end_for
EXIT:
MOV AH,4CH INT 21H MAINENDP
END MAIN
Giạithíchtheđmveăchươngtrình:vìsôkýtựnhaơplàkhođngbiêtvìvaơydùng thanhghiCXđeơđêmsôkýtựnhaơp.CXcũngdùngcho vòngFORđeơxuâtcáckýtự theothứtựngượclái.MaịcdùkýtựchưgiữtređnALnhưngphạiđaơycạthanhghiAX vàostack .KhixuâtkýtựchúngtadùngleơnhPOP DXđeơlâynoơidungtređnstackra. MãASCIIcụakýtựởtređnDL,sauđógĩi INT 21h đeơ xuâtkýtự.