доброе время суток всем!
помогите разобраться в программе: заданы две строки. скопировать в третью строку те символы, которые есть во второй строке. определить число символов в результируюшей строке. (текст взят из методички, но не работает) почему зацыкливается?
model small
stack 256
.Data
string1 db 'fb123cd45'
string2 db '0123456789'
n1 dw 9
n2 dw 10
res db 9 dup(?)
n dw ?
.code
begin: mov ax,@data
mov dx,ax
lea di,res
mov ax,0
mov cx,n1
lea si,string1
Fori: push cx
lea bx,string2
mov cx,n2
Forj: mov dl,[si]
cmp dl,[bx]
jne nexti
mov[di],dl
inc ax
inc di
jmp breakj
nexti: inc bx
loop forj
breakj: pop cx
inc si
loop fori
mov n,ax
mov ah,4ch
int 21h
end begin
19 ноября 2008 в 19:02
Вот, компилер MASM:
.MODEL small
.STACK 256
.DАТА
str1 db "00123cd45",0Dh,0Ah,'$'
str2 db "0123456789",0Dh,0Ah,'$'
n1 dw 9
n2 dw 10
res db 10 dup(?),0Dh,0Ah,'$'
n dw 0
msg1 db "res=",'$'
msg2 db "n=",'$'
.CODE
begin:
mov ax,@DАТА
mov ds,ax
xor ax, ax
mov di, offset res
mov si, offset str1
mov bx, offset str2
mov cx, n2
for_i:
push cx
cmp cx, 0
je end_loop
mov cx, n1
for_j:
cmp cx, 0
je end_for_i
mov al, [si]
cmp al, [bx]
jne end_for_j
mov [di], al
inc di
mov ax, n
inc ax
mov [n], ax
end_for_j:
inc si
loop for_j
end_for_i:
pop cx
mov si, offset str1
inc bx
loop for_i
end_loop:
mov dx, offset msg1
mov ah, 9
int 21h
mov dx, offset res
mov ah, 9
int 21h
mov dx, offset msg2
mov ah, 9
int 21h
mov ax, n
add ax, 30h
mov dx, ax
mov ah, 2
int 21h
mov ax,4C00h
int 21h
end begin
19 ноября 2008 в 17:01
По-моему, после строки "begin: mov ax,@data" должна быть строка "mov ds, ax", а не "mov dx, ax" так как мы в начале должны загрузить в регистр ds адрес сегмента данных.
19 ноября 2008 в 16:04
к меня нет этой программы((( а что она помогает?
19 ноября 2008 в 16:01
а в турбо-дебагерре(TD.EXE) пробовала прогнать?
19 ноября 2008 в 14:00
оооо! настюха)))