插入两个字符串组件的元素 8086
intercalate elements of two strings assembly 8086
我的程序有点问题。
我必须插入两个字符串的元素,所以如果我有
S1: 1, 3, 5, 7
S2: 2, 6, 9, 4
结果为 D: 1, 2, 3, 6, 5, 9, 7, 4。
这就是我到目前为止所做的,我不知道如何解决它,请帮忙吗?
assume cs:code, ds:data
data segment
s1 db '1357'
s2 db '2694'
l1 EQU ($-s1)
l2 EQU ($-s2)
d db (l1+l2) dup (?)
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,offset s1
mov cx,l1
mov bx, 0
frst:
mov ax,[si]
mov [di]+[bx],ax
inc si
add bx,2
loop frst
mov si, offset s2
mov cx,l2
mov bx,1
scnd:
mov ax,[si]
mov [di]+[bx],ax
inc si
add bx,2
loop scnd
mov ax,4c00h
int 21h
code ends
end start
代码中有几个错误,首先
s1 db '1357'
s2 db '2694'
l1 EQU ($-s1)
l2 EQU ($-s2)
把s1
的长度弄错了,应该是
s1 db '1357'
l1 EQU ($-s1)
s2 db '2694'
l2 EQU ($-s2)
其次,di
被使用但未初始化,插入
mov di, offset d
在第一个循环之前。接下来,数据数组是由 db
定义的 byte
值,但您正在加载和存储 ax
寄存器。这应该是 al
寄存器,因为
mov al,[si]
mov [di]+[bx],al
我的程序有点问题。 我必须插入两个字符串的元素,所以如果我有
S1: 1, 3, 5, 7
S2: 2, 6, 9, 4
结果为 D: 1, 2, 3, 6, 5, 9, 7, 4。
这就是我到目前为止所做的,我不知道如何解决它,请帮忙吗?
assume cs:code, ds:data
data segment
s1 db '1357'
s2 db '2694'
l1 EQU ($-s1)
l2 EQU ($-s2)
d db (l1+l2) dup (?)
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,offset s1
mov cx,l1
mov bx, 0
frst:
mov ax,[si]
mov [di]+[bx],ax
inc si
add bx,2
loop frst
mov si, offset s2
mov cx,l2
mov bx,1
scnd:
mov ax,[si]
mov [di]+[bx],ax
inc si
add bx,2
loop scnd
mov ax,4c00h
int 21h
code ends
end start
代码中有几个错误,首先
s1 db '1357'
s2 db '2694'
l1 EQU ($-s1)
l2 EQU ($-s2)
把s1
的长度弄错了,应该是
s1 db '1357'
l1 EQU ($-s1)
s2 db '2694'
l2 EQU ($-s2)
其次,di
被使用但未初始化,插入
mov di, offset d
在第一个循环之前。接下来,数据数组是由 db
定义的 byte
值,但您正在加载和存储 ax
寄存器。这应该是 al
寄存器,因为
mov al,[si]
mov [di]+[bx],al