Пример из §16 П2. Работа со списками.

Пример. Если x входит в список L, удалить следующий за ним элемент, иначе вставить x в начало списка.

type  list =  chain;	NIL EQU 0	
        chain = record		
                         elem: integer;	CHAIN   STRUC	
                         next: list	        ELEM  DW  ?	
                   end;	        NEXT   DW  ?	
	CAIN    ENDS	
var L, b: list; f: boolean; 		
       x: integer;	HEAP   SEGMENT	
	           ;      *     *      *	
	HEAP   ENDS	
	DATA   SEGMENT	
	   L  DW  ?; адрес начала списка	
	   X  DW  ?	
	DATA   ENDS	
	           ;      *     *      *	
	MOV  AX,  DATA	
	MOV DS,  AX	
	MOV  AX,  HEAP	
	MOV ES,  AX	
		
b:= L;  f:= false;	MOV  AX, X	
while (b  nil) and not f do	MOV  BX, L	
if b.elem = x then f:= true	SEARCH: CMP BX, NIL	
else b:= b.next;	                 JE   INSERT	
	                 CMP  ES:[BX].ELEM,  AX	
	                 JE   FOUND	
	                 MOV  BX,  ES:[BX].NEXT	
	JMP  SEARCH	
		
if f then	FOUND: MOV  DI,  ES:[BX].NEXT	
  begin  d:= b.next;	                 CMP  DI,  NIL	
             if d  nil then	                 JE  FIN	
               begin  b.next := d.next;	                 PUSH  ES:[DI].NEXT	
                          dispose (d)	                 POP  ES:[BX].NEXT	
               end	                 CALL  DISPOSE	
  end	       JMP  SHORT  FIN	
else		
   begin  new (d);	INSERT: CALL  NEW	
              d.elem := x;	                 MOV  ES:[DI].ELEM,  AX	
              d.next := L;	                 PUSH  L	
               L := d	                 POP  ES:[DI].NEXT	
  end	                 MOV  L,  DI	
	FIN: