Товарищи! помогите найти ошибку. нужно определить начало строки и ее длину, причем начало должно быть в si, а длина в сх(для передачи этих параметров моей фун-ции. Пытался делать так: Код (Text): xor dx,dx xor bx,bx mov di,2 mov si,1 mov cl,buffer[1] mov ch,0 POK: push cx cmp buffer[di],' ' jg next mov cx,bx inc si call StrToInt mov ax,x ; Ђ• call dec_to_bin ;‚›‡›‚Ђ…Њ ЏђЋ–…„“ђ“ Џ…ђ…‚Ћ„Ђ!!! call write inc si inc si xor bx,bx mov dx,666 jmp lala next: inc bx lala: inc di pop cx Loop POK Строчку до первого пробела он находит идеально, а дальше не идет. Подскажите где моя ошибка, очень срочно. Спасибо!
А можно чуть подробнее, что значит "определить начало строки"? В чем, и как ты собираешься это определять? По исходнику трудно что-то понять. Догадываюсь, что начало строки отмечено пробелом, но как определить конец строки не ясно... А вообще, чую, тему надо отправлять в студенческий раздел.
Вот весь код. Задача в чем. Вводится строка с клавы и я должен все числа в этой строке перевести в двоичную сис.счис. Процедуру перевода, вывода на экран я напсиал. А вот как заорганизвоать все это в цикле не понятно.... Код (Text): ;‘…ѓЊ…Ќ’ „ЂЌЌ›• .186 ;ўЄ«оз Ґ¬ Є®¬ ¤л 186е Є ¬Ґ©.(¤«п PUSHA Ё POPA) Data Segment err1 db "ЋиЁЎЄ ў ў®¤Ґ зЁб« .",10,13,'$' text db "‚ўҐ¤ЁвҐ cва®Єг зЁбҐ« ®в 0 ¤® 255",10,13,'$' buf db 8 dup(?) dva db 2 d10 db 10 x dw 0 buffer db 255 stroka dw 25 Data ends ;++++++++++++++++++++++++++++++++++++++++++++++++++++ ;//////////////////‘…ѓЊ…’Ќ ЉЋ„Ђ ;++++++++++++++++++++++++++++++++++++++++++++++++++++ Code segment assume cs:code, ds:data; start: mov ax,data mov ds,ax ;-------ЏаҐ¤« Ј Ґ¬ ўўҐбвЁ зЁб«®: mov ah,9h lea dx,text int 21h ;-------‘®Ўб⢥® б ¬ ўў®¤: mov ah,0Ah lea dx,buffer ;ў ЎгдҐа § ЇЁблў Ґ¬ ўўҐ¤Ґго бва®Єг. int 21h mov si,2 ;б® ўв®а®Ј® Ў ©в Ё¤Ґв б ¬ ўўҐ¤Ґ п бва®Є mov cl,buffer[1] ;§ ®бЁ¬ ў ‘• mov ch,0 ;„«Ёг ўўҐ¤Ґ®© бва®ЄЁ ;-------------------ЏђЋ‚…ђџ…Њ ‘’ђЋЉ“ Prover: cmp buffer[si],'0' ; ’“’ jl erro ; ‚‘… cmp buffer[si],'9' ;џ‘ЌЋ jg erro ;!!!! probel: inc si loop prover jmp Poehali erro: cmp buffer[si],' ' je probel mov ah,9h lea dx,err1 ;ў ЎгдҐа § ЇЁблў Ґ¬ ўўҐ¤Ґго бва®Єг. int 21h JMP QUIT ;/*/*/*/*/*/*/*/*/*/*/*/*/*/ ;ROCK-N-ROLL! ;/*/*/*/*/*/*/*/*/*/*/*/*/*/ Poehali: ;******************************** ;*ЏаҐ®Ўа §®ўлў Ґ¬ бва®Єг ў зЁб«®* ;******************************** mov al,10 int 29h mov al,13 int 29h ;---- xor dx,dx xor bx,bx mov di,2 mov si,1 mov cl,buffer[1] mov ch,0 POK: push cx cmp buffer[di],' ' jg next mov cx,bx inc si call StrToInt mov ax,x ; Ђ• call dec_to_bin ;‚›‡›‚Ђ…Њ ЏђЋ–…„“ђ“ Џ…ђ…‚Ћ„Ђ!!! call write inc si inc si xor bx,bx mov dx,666 jmp lala next: inc bx lala: inc di pop cx Loop POK ;cmp dx,1 ;je net ; mov cl,buffer[1] ; xor ch,ch ; mov si,2 ; ; call StrToInt ; mov ax,x ; Ђ• ; call dec_to_bin ;‚›‡›‚Ђ…Њ ЏђЋ–…„“ђ“ Џ…ђ…‚Ћ„Ђ!!! mov si,8 ;ў si ¤«Ё бва®ЄЁ mov cx,8 ;ў бе ⮦Ґ ;-*-*-*-*-*-*-*-*-*-‚›‚Ћ„?Њ „‚Ћ?—ЌЋ… —?‘‹Ћ ЌЂ ќЉђЂЌ-*-*-*-*-*-*-*-*-*- ;viv: ; mov al,buf[si] ;‘®Ўб⢥® Ї®бЁ¬ў®«мл© ўлў®¤ нЄа ; int 29h ;бва®ЄЁ. ; dec si ;‘ва®Єг ўлў®¤Ё¬ б Є®ж . ;loop viv net: ;‚›•Ћ„ ў.... jmp quit ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/* ;ЏђЋ–…„“ђЂ Џ…ђ…‚Ћ„Ђ ?‡ ‘’ђЋЉ? ‚ —?‘‹Ћ! ;ЌЂ ‚室Ґ buffer = ўўҐ¤Ґ®© бва®ЄҐ. cx - Ї®§ЁжЁп ;Ќ ўл室Ё ў е Ї®¬Ґй Ґвмбп зЁб«® ;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/* ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% StrToInt proc pusha ; mov si,2 ;б® ўв®а®Ј® Ў ©в Ё¤Ґв б ¬ ўўҐ¤Ґ п бва®Є ; mov cl,buffer[1] ;§ ®бЁ¬ ў ‘• ; xor ch,ch ;„«Ёг ўўҐ¤Ґ®© бва®ЄЁ xor ax,ax per_ch: mov bl,buffer[si] ;ў bl «®¦Ё¬ ®зҐаҐ¤®© бЁ¬ў®« бва®ЄЁ sub bl,48 ;ўлзЁв Ґ¬ Є®¤ 0 Ё Ї®«гз Ґ¬ зЁб«® xor bh,bh ;зв®Ўл ў ‚• Ўл«® в®«мЄ® иҐ зЁб«® add ax,bx ;бЄ« ¤лў Ґ¬ б Ђ• cmp cx,1 ;ба ўЁў Ґ¬ ‘• б 1 jna exx ;…б«Ё ¬ҐмиҐ Ё«Ё а ў® Ё¤e¬ Є®Ґж жЁЄ« mul d10 ;? зҐ г¬®¦ Ґ¬ зЁб«® 10 exx: inc si ;‘«Ґ¤гойЁ© бЁ¬ў®« loop per_ch ;------------------------------- mov x,ax ;ў • б®еа 塞 § 票Ґ е popa ;¤®бв Ґ¬ ўбҐ ॣЁбвал Ё§ бвнЄ Ret StrToInt EndP ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/* ;ЏђЋ–…„“ђЂ Џ…ђ…‚Ћ„Ђ ?‡ 10®© ‘?‘’…Њ› ў „‚Ћ?—Ќ“ћ! ;ЌЂ ‚室Ґ Ђ• = ¤ҐбпвЁз®¬г зЁб«г. ;Ќ ўл室Ё ў buf Ї®¬Ґй Ґвмбп ¤ў®Ёз®Ґ зЁб«® ;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/* ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% dec_to_bin proc pusha mov cx,8 ;„«Ё бва®ЄЁ mov si,2 ;б® ўв®а®Ј® Ў ©в Ё¤Ґв бва®Є , ў ЇҐаўле ¤ўге б«г¦ҐЎ п Ёд cycl: div dva ;„Ґ«Ё¬ ®б®ў ЁҐ бЁб⥬л бзЁб«ҐЁп push ax ;‘®еа 塞 е ў бвнЄҐ cmp ah,0 ;ба ўЁў Ґ¬ е б 0 jne ed ;Ґб«Ё Ґ а ў® в® § ЇЁблў Ґ¬ ў buf 1 mov al,48 ; Ё зҐ § ЇЁблў Ґ¬ mov buf[si],al;ЌЋ‹…ѓ!(Є®¤ ҐЈ® 48;) jmp exxx ;„г¬ о пб®;) ed: mov al,49 ;Ђ вгв § ЇЁблў Ґ¬ Ґ¤ҐЁзЄг mov buf[si],al;ЉЋ„ Ґ¤ҐЁзЄЁ ў ASCII 49 exxx: pop ax ;¤®бв Ґ¬ е inc si ;Ё¤Ґ¬ б«Ґ¤гойЁ© бЁ¬ў®« бва®ЄЁ loop cycl ;Ї®ўв®а塞, «Ёў Ґ¬ POPA RET dec_to_bin EndP ;************************************** write proc PushA mov si,8 ;ў si ¤«Ё бва®ЄЁ mov cx,8 ;ў бе ⮦Ґ viv: mov al,buf[si] ;‘®Ўб⢥® Ї®бЁ¬ў®«мл© ўлў®¤ нЄа int 29h ;бва®ЄЁ. dec si ;‘ва®Єг ўлў®¤Ё¬ б Є®ж . loop viv Popa RET write endp ;“ђЂ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;Џђ?‘’…ѓ?‚Ђ…Њ ђ…ЊЌ?, ЌЂ‹?‚Ђ…Њ Џ?‚Ћ ? ЌЂ‘‹Ђ†„Ђ…Њ‘џ ђЂЃЋ’Ћ‰ ЏђЋѓ?!!! ;“ђЂ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! quit: mov ax,4C00h int 21h ;*-*-*-*-*-*-*-*-* Code ends end start