Write an 8086 assembly language program to push the following values on stack 450, 0, 487, 101, 500, 0, 359, 0, 458 Now write a code to delete the items having quantity zero and update the stack.
.stack 16h
DATA SEGMENT
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
push bp ; save on stack the base pointer
; to push the 9 values on stack
push 450
push 0
push 487
push 101
push 500
push 0h
push 359
push 0h
push 458
mov cx,9 ; counter
mov bp, sp ; BP - Itis offset address relative to stack segment.
add sp, 2
add bp ,2
begining:
pop ax ; pop from stack
dec cx ; counter--
cmp cx,0 ; last value?
je exit
cmp ax,0 ; value == 0?
je next
mov [bp],ax ; store non-null value on the stack
add bp,2 ;next save address
jmp begining
next:
jmp begining
exit:
pop bp ; restore bp
MOV AH,1 ; Waiting for a key press
INT 16H
EXIT_PROG: ; Program is terminated
MOV AH,4CH
INT 21H
CODE ENDS
END START
Comments
Leave a comment