题目描述:Link指向一个线性表,其中的首单元保存线性表的长度,编写程序,将该线性表中内容为0FFFFH的项删除。
分析:从第一个元素开始逐个比较,找到0FFFFH删除并将长度减1。
代码:
data segment link dw 10,1,0FFFFH,2,3,0FFFFH,0FFFFH,4,5,6,0FFFFH data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov bx,2 loop1: mov ax,link mov dl,2 mul dl mov si,ax ;确定末位元素 cmp bx,si ja output cmp link[bx],0FFFFH jz delete add bx,2 jmp loop1 delete: mov di,bx mov ax,link mov dl,2 mul dl mov si,ax ;确定末位元素 loop2: cmp di,si jae next mov ax,link[di+2] ;后面元素往前移动 mov link[di],ax add di,2 jmp loop2 next: dec link jmp loop1 output: mov cx,link mov bx,2 loop3: ;输出 mov dx,link[bx] add dx,30H mov ah,02H int 21h mov ah,02h mov dl,' ' int 21h add bx,2 loop loop3 mov ah,4CH int 21h code ends end start