Ưùng dúng cụa stack

Một phần của tài liệu giáo trình hợp ngữ nâng cao (Trang 60 - 62)

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ự.

Một phần của tài liệu giáo trình hợp ngữ nâng cao (Trang 60 - 62)