我有一个结构数组,我需要删除给定位置的元素。这是我结构的补偿。
MOVIE equ 62
title equ 0
year equ 52
time equ 54
rating equ 56
假设我有一个包含12个元素的数组,我将如何删除位置5的元素?
答案 0 :(得分:0)
第一件事是您不会拥有“结构数组”。 理想的形式是对结构使用 pointers 的数组,每个指针都引用其自身的结构。
MOVEQ #5,D0 ;element you want to delete
BSR DEL_MOVE
SIMHALT
DEL_MOVE
LSL.W #2,D0 ; long words
LEA MOVIES,A0 ; array start
LEA 0(A0,D0),A2 ; element in array (starts at 0)
LEA 11*4(A0),A1 ; end of array -1
DEL MOVE.L 4(A2),(A2)+ ; move down
CMP.L A2,A1 ; at end yet?
BLT.S DEL ; branch if not
MOVE.L #0,(A2)+ ; last element is null
RTS
MOVIES DC.L MOVIE1, MOVIE2, MOVIE3 ...
MOVIE1 DS.B 62
MOVIE2 DS.B 62
...