gryphon
چهارشنبه 01 دی 1389, 01:52 صبح
سلام
من یه برنامهنوشتم که یک رشته دریافت میکنه و 2 کارکتر، بعد تو رشته به جای کارکتر اول کارکتر دوم رو قرار میده.
برنامه کاری رو که باید انجام بده انجام میده، اما اول رشته بسته به تعداد حروف 2 کاراکتر اضافه چاپ میکنه، بارها چک کردمش. اما نمی تونم بفهمم که مشکل کجاست!
data segment
str label byte
max db 20
len db ?
buf db 21 dup('$')
x db ?
y db ?
ends
stack segment
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
lea dx,str
mov ah,0ah
int 21h
mov dh,1
mov dl,0
mov ah,2
int 10h
mov ah,1
int 21h
mov x,al
mov dh,2
mov dl,0
mov ah,2
int 10h
mov ah,1
int 21h
mov y,al
mov dh,3
mov dl,0
mov ah,2
int 10h
mov cx,21
lea si,str
l1:
mov dl,[si]
cmp dl,'$'
je l3
cmp dl,x
jne l2
mov dl,y
l2:
mov ah,2
int 21h
inc si
loop l1
l3:
mov ah,8
int 21h
mov ax, 4c00h
int 21h
ends
end start
من یه برنامهنوشتم که یک رشته دریافت میکنه و 2 کارکتر، بعد تو رشته به جای کارکتر اول کارکتر دوم رو قرار میده.
برنامه کاری رو که باید انجام بده انجام میده، اما اول رشته بسته به تعداد حروف 2 کاراکتر اضافه چاپ میکنه، بارها چک کردمش. اما نمی تونم بفهمم که مشکل کجاست!
data segment
str label byte
max db 20
len db ?
buf db 21 dup('$')
x db ?
y db ?
ends
stack segment
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
lea dx,str
mov ah,0ah
int 21h
mov dh,1
mov dl,0
mov ah,2
int 10h
mov ah,1
int 21h
mov x,al
mov dh,2
mov dl,0
mov ah,2
int 10h
mov ah,1
int 21h
mov y,al
mov dh,3
mov dl,0
mov ah,2
int 10h
mov cx,21
lea si,str
l1:
mov dl,[si]
cmp dl,'$'
je l3
cmp dl,x
jne l2
mov dl,y
l2:
mov ah,2
int 21h
inc si
loop l1
l3:
mov ah,8
int 21h
mov ax, 4c00h
int 21h
ends
end start