【发布时间】:2014-05-15 17:21:48
【问题描述】:
我有这段代码将数组“NUMBERS”复制到“DEST”,这样没有数字会重复(在这种情况下应该是:1,2,5,4,7) 该代码有效,但现在我需要打印数组“DEST”。我该怎么做?
data segment
NUMBERS db 1,2,1,1,1,5,5,4,7,7
DEST dt ?
data ends
code segment
assume ds:data, cs:code
start: mov ax, data
mov ds, ax
mov ax, 0a0ah
mov di, offset NUMBERS
mov bx, 0h
loop2:mov cl, [di]
mov si, offset DEST
mov ch, [si]
loop1:cmp ch, cl
je dontadd
inc si
mov ch, [si]
dec ah
jnz loop1
mov si, offset DEST
add si, bx
inc bx
mov [si], cl
dontadd:mov ah, 0ah
inc di
dec al
jnz loop2
mov ah, 4ch
int 21h
code ends
end start
【问题讨论】:
-
为什么在应该写入 DEST 时从 DEST 读取代码(从 NUMBERS 复制一些数据)。要“打印”一个字符串,请转换为 ascii,附加一个 '$',然后使用 dos 函数 int 21h 和 ah = 09h(ds:dx 中的地址)。
标签: arrays assembly printing x86 dos