81

(12 відповідей, залишених у Системне програмування)

0xDADA11C7 написав:
    je call crossroads      ;- викликаєм процедуру "роздоріжжя"

Цей рядок компілер не зїсть, томку код не ваш і він не компілюється.

ОМГ, а чий код? Це дурне ствердження мене заїло, бо писав його тільки я. Алгоритм придумав сам. В теорії все повинно працювати, а на практиці виходить по-іншому. В коді є фрагменти інших програм, але все тільки тому, що я економив час.
Я асемблер ще в неділю знав на рівні японської мови. Конішуа, і більше нічого. Я не знаю навіть більшості особливостей ассемблера, тому і звернувся по допомогу!
А за це - дякую, зрозумів в чому проблема.

0xDADA11C7 написав:

Ну і

    cmp al, 0                    ; перевіряєм на нуль

Визначтеся - ви число перевіряєте чи літеру?

82

(12 відповідей, залишених у Системне програмування)

Основна проблема в ось цьому куску програми.
Опишу детальніше.
Починається все з циклу для того щоб занести дані в буфер і порівняти їх із 0.
Заносим в al з буфера один символ (сітий член).
Наступним кроком перевіряєм на нуль, якщо істина - викликаєм процедуру increment, в якій інкрементуєм змінну k. Потрібно це для того щоб знати скільки нулів в чотирицифровому значенні. Коли  змінна інкрементувалась - наступним кроком цей символ заноситься в буфер2 із дітим членом (регістр di).
Інкрементується si та di.
Якщо di = 4 (масив заповнився 4-ма числами) - викликаєм процедуру crossroads, в якій повинен визначатись запис файлу відносно змінної k, в якій знаходиться кількість наших нулів, але відбувається чомусь не так, записуються всі файли з першим елементом (на нулі не перевіряється).
Можливо я якісь регістри пропустив, а їх треба обнулити?

;----------main logic----------
 
compare proc                 ;цикл перевірки зчитаних чисел з В1 і запису в інші файли
    mov cx, 50
    mov si, 0 
    mov di, 0
  input:
    mov al, [bufer+si]        ;заносим в регістр al si член масиву
   
    cmp al, 0                    ; перевіряєм на нуль
    je call increment          ; якщо 0 - інкрементуєм лічильник нуля
                        
    mov [bufer2+di],al   ;записуєм символ в буфер 2
    inc si                      ;інкрементуєм si
    inc di                      ;інкрементуєм di
    cmp di, 4                 ;якщо di = 4 -
    je call crossroads      ;- викликаєм процедуру "роздоріжжя"
   loop input      
    
compare endp       
            
;----------inc k-----------           
            
increment proc
    inc k                            ;процедура інкрементування нульвого лічильника
increment endp
     
;----------crossroads----------  
 
crossroads proc                 ;"роздоріжжя"
    
    cmp k, 1                      ;якщо к=1
    je call writeb2               ;викликаєм запис в файл В2
    
    cmp k, 2                       ;якщо к=2
    je call writeb3                ;викликаєм запис в файл В3 
    
    cmp k, 3                       ;якщо к=3
    je call writeb3                ;викликаєм запис в файл В2 
 
    mov k, 0                        
    mov di, 0                      ;обнуляєм лічильники
    inc si                            ;інкрементуєм регістр si щоб пропустити "пропуск" 
                                       ;(числа в файл заносяться через "пропуск", "пробіл")
crossroads endp   
                               
;---------write to files------------
 
;---------b2---------                              
writeb2 proc                      ;функції запису в файли числа з буфера2 
    mov ah, 42h
    mov bx, handleb2
    mov al, 0
    mov cx, 0
    mov dx, 0
    int 21h
    inc k    
  
    mov ah, 40h
    mov bx, handleb2
    mov dx, offset bufer2
    mov cx, size2
    int 21h     
    
    mov ah, 3eh
    mov bx, handleb2
    int 21h
writeb2 endp
           
;---------b3---------            
writeb3 proc
    mov ah, 42h
    mov bx, handleb3
    mov al, 0
    mov cx, 0
    mov dx, 0
    int 21h
    inc k    
  
    mov ah, 40h
    mov bx, handleb3
    mov dx, offset bufer2
    mov cx, size2
    int 21h     
    
    mov ah, 3eh
    mov bx, handleb3
    int 21h    
writeb3 endp
 
;---------b4--------- 
writeb4 proc
    mov ah, 42h
    mov bx, handleb4
    mov al, 0
    mov cx, 0
    mov dx, 0
    int 21h
    inc k    
  
    mov ah, 40h
    mov bx, handleb4
    mov dx, offset bufer2
    mov cx, size2
    int 21h     
    
    mov ah, 3eh
    mov bx, handleb4
    int 21h
writeb4 endp
 
ret

83

(12 відповідей, залишених у Системне програмування)

0xDADA11C7 написав:

цей цод не ваш і він не компілюється

ні, цей код мій, і він компілюється. Може у нас різні версії емулятора.
ось скрини виконання програми:
Компіляція:
https://pp.сайт-злодій/c630425/v630425937/1c67d/NTv4eraPt2c.jpg
Успішне компілювання:
https://pp.сайт-злодій/c630425/v630425937/1c686/no95RvklpX8.jpg
Папка зі створеними файлами:
https://pp.сайт-злодій/c630425/v630425937/1c68f/heWXsxGoTYg.jpg
Перший файл із всіма числами:
https://pp.сайт-злодій/c630425/v630425937/1c698/4z-u4Ywf1gQ.jpg
Наступні 3 файли із першим чотирицифровим числом:
https://pp.сайт-злодій/c630425/v630425937/1c6a1/pONRLEpIjBE.jpg

84

(12 відповідей, залишених у Системне програмування)

Ярослав написав:

navchalkin, а в чому Ви працюєте?

Emu8086

85

(12 відповідей, залишених у Системне програмування)

Всім привіт, пройшло трохи часу, всі попередні проблеми вирішив. Та тепер назріли нові.
Завдання: Розробити програму яка відслідковує появу вказаних цифр у числовому файлі. Створити файл В1 з чотирицифрових чисел шляхом введення з клавіатури, утворити файл В2 з чисел файлу В1, що мають один нуль, утворити файл В3 з чисел файлу В1, що мають дванулі і утворити файл В4 з чисел файлу В1, що мають три нулі.

Готовий код в мене є, тільки от із самим занесенням в файли В2, В3, В4 проблема. Заносить тільки перше чотирицифрове число в ці три файла, причом не звертає увагу на нулі. А повинно було би)
Коментований код:

org 100h      
jmp start                        
                        
b1 db 'kursach\b1.txt',0  
b2 db 'kursach\b2.txt',0
b3 db 'kursach\b3.txt',0
b4 db 'kursach\b4.txt',0   
k db 0                          ;лічильник нулів

handle dw ? 
handleb2 dw ?
handleb3 dw ?
handleb4 dw ?  

bufer  db 50 DUP (?)     
bufer2 db 50 DUP (?)   
size  = $ - offset bufer     
size2 = $ - offset bufer2   

start:              

mov ax, cs
mov dx, ax
mov es, ax

mov ah, 3ch
mov cx, 0
mov dx, offset b1          ;створення файлу В1
int 21h
mov handle, ax

;--------scan, check, write in file----------
       
level1:      
mov ah,1                                    
int 21h                         ;зчитування чисел з клавіатури
mov dl,al        
                                     
cmp al,13                     ;перевірка на Enter
je call write                  ;якщо так - тоді перехід на мітку запису в файл

mov [bufer+si], al         ;запис введених даних в масив
add si, 1        
jne level1 

level2:
    call b2proc                
    call b3proc                ;створення 3 файлів В
    call b4proc
    call read                   ;процедура зчитування з файлу В1

;---------------------------------------------------proc-------------- 
                                        
;------------write to file b1-----------                                        
write proc
    mov ah, 42h
    mov bx, handle
    mov al, 0
    mov cx, 0
    mov dx, 0
    int 21h
    inc k    
  
    mov ah, 40h
    mov bx, handle
    mov dx, offset bufer    ;Процедура запису в В1
    mov cx, size
    int 21h     
    
    mov ah, 3eh
    mov bx, handle
    int 21h     
write endp      

;-----------create file b2, b3, b4------------
              
b2proc proc
    mov ah, 3ch
    mov cx, 0
    mov dx, offset b2
    int 21h
    mov handleb2, ax                  
b2proc endp    

b3proc proc
    mov ah, 3ch
    mov cx, 0
    mov dx, offset b3        ;створення 3 файлів В
    int 21h
    mov handleb3, ax                  
b3proc endp

b4proc proc
    mov ah, 3ch
    mov cx, 0
    mov dx, offset b4
    int 21h
    mov handleb4, ax                  
b4proc endp
         
;----------read the file b1---------         
         
read proc 
    MOV AH,3DH             
    MOV AL,0                      
    MOV DX,OFFSET b1    
    INT 21H                   
    MOV HANDLE, AX               
        
    MOV AH,3FH              
    MOV BX,HANDLE         
    MOV CX,512              
    MOV DX,OFFSET bufer   ;читання з файлу В1            
    INT 21H
    CMP AX,512   
read endp  

;----------main logic----------

compare proc                 ;цикл перевірки зчитаних чисел з В1 і запису в інші файли
    mov cx, 50
    mov si, 0 
    mov di, 0
  input:
    mov al, [bufer+si]        ;заносим в регістр al si член масиву
   
    cmp al, 0                    ; перевіряєм на нуль
    je call increment          ; якщо 0 - інкрементуєм лічильник нуля
                        
    mov [bufer2+di],al   ;записуєм символ в буфер 2
    inc si                      ;інкрементуєм si
    inc di                      ;інкрементуєм di
    cmp di, 4                 ;якщо di = 4 -
    je call crossroads      ;- викликаєм процедуру "роздоріжжя"
   loop input      
    
compare endp       
            
;----------inc k-----------           
            
increment proc
    inc k                            ;процедура інкрементування нульвого лічильника
increment endp
     
;----------crossroads----------  

crossroads proc                 ;"роздоріжжя"
    
    cmp k, 1                      ;якщо к=1
    je call writeb2               ;викликаєм запис в файл В2
    
    cmp k, 2                       ;якщо к=2
    je call writeb3                ;викликаєм запис в файл В3 
    
    cmp k, 3                       ;якщо к=3
    je call writeb3                ;викликаєм запис в файл В2 

    mov k, 0                        
    mov di, 0                      ;обнуляєм лічильники
    inc si                            ;інкрементуєм регістр si щоб пропустити "пропуск" 
                                       ;(числа в файл заносяться через "пропуск", "пробіл")
crossroads endp   
                               
;---------write to files------------

;---------b2---------                              
writeb2 proc                      ;функції запису в файли числа з буфера2 
    mov ah, 42h
    mov bx, handleb2
    mov al, 0
    mov cx, 0
    mov dx, 0
    int 21h
    inc k    
  
    mov ah, 40h
    mov bx, handleb2
    mov dx, offset bufer2
    mov cx, size2
    int 21h     
    
    mov ah, 3eh
    mov bx, handleb2
    int 21h
writeb2 endp
           
;---------b3---------            
writeb3 proc
    mov ah, 42h
    mov bx, handleb3
    mov al, 0
    mov cx, 0
    mov dx, 0
    int 21h
    inc k    
  
    mov ah, 40h
    mov bx, handleb3
    mov dx, offset bufer2
    mov cx, size2
    int 21h     
    
    mov ah, 3eh
    mov bx, handleb3
    int 21h    
writeb3 endp

;---------b4--------- 
writeb4 proc
    mov ah, 42h
    mov bx, handleb4
    mov al, 0
    mov cx, 0
    mov dx, 0
    int 21h
    inc k    
  
    mov ah, 40h
    mov bx, handleb4
    mov dx, offset bufer2
    mov cx, size2
    int 21h     
    
    mov ah, 3eh
    mov bx, handleb4
    int 21h
writeb4 endp

ret

Проблема в тому, що воно записує тільки перше чотирицифрове число, і у всі файл, навіть якщо я запис в ті файли не викликаю. Може хтось підкаже як оптимізувати алгоритм? Буду дуже вдячним!

86

(12 відповідей, залишених у Системне програмування)

Всім привіт. Потрібно створити програму яка створює файл і записує в нього дані.
Я знайшов схожу в прикладах програми Emu8086, але вона не працює, тобто компілюється без помилок але файли не створює. Замість "PROGRAM HAS RETURNED CONTROL TO THE OPERATING SYSTEM" після компіляції видає "program terminated". Як виявилось, програма не створює папки і файли за вказаними адресами, бо чомусь бере за корненеву директорію c:\emu8086\MyBuild\.
Стандартну програму переробив, зменшив код і викинув все непотрібне. Працює тільки з директорією MyBuild. Можливо хтось знає в чім проблема?

org 100h

jmp start

file1 db "t1.txt", 0
handle dw ?   

text db "lazy dog jumps over red fox."
text_size = $ - offset text

start:
mov ax, cs
mov dx, ax
mov es, ax


            
; create and open file: c:\emu8086\MyBuild\t1.txt
mov ah, 3ch
mov cx, 0
mov dx, offset file1
int 21h
jc err2
mov handle, ax
; seek:
mov ah, 42h
mov bx, handle
mov al, 0
mov cx, 0
mov dx, 10
int 21h
; write to file:
mov ah, 40h
mov bx, handle
mov dx, offset text
mov cx, text_size
int 21h
; seek:
mov ah, 42h
mov bx, handle
mov al, 0
mov cx, 0
mov dx, 2
int 21h
; write to file:
mov ah, 40h
mov bx, handle
mov dx, offset text
mov cx, text_size
int 21h
; close c:\emu8086\MyBuild\t1.txt
mov ah, 3eh
mov bx, handle
int 21h
err2:
nop
            
ret 

87

(22 відповідей, залишених у *nix)

нє, ну LAMP - то трохи геморой, коли порівнювати із іншими локальними серверами (Denwer, XAMPP...)

88

(10 відповідей, залишених у Системи керування контентом)

/

89

(6 відповідей, залишених у Системи керування контентом)

Вже включили. Завантажив вже з нашою мовою:) Дякую:)

90

(10 відповідей, залишених у Системи керування контентом)

ОК, визнаю, погарячкував і не правильно висловився (виписався хД), прошу вибачення.
1) Ось посилання на повний шаблон. Всі файли. https://drive.google.com/file/d/0B3JbJ7 … sp=sharing
2) ...
3) ...
4) ...
5) тож смертний
6) Сервер локальний на платформі Open Server 5.2.3; Клієнт - Файрфокс і Хром.
Що конкретно цікавить про серв?

91

(10 відповідей, залишених у Системи керування контентом)

truesupport написав:

Ну можна почати з самого очевидного, кеш чистили ? ctrl + f5 в хромі здається.

Чистив. Сервер перезагружав.

92

(10 відповідей, залишених у Системи керування контентом)

HetmanNet написав:
navchalkin написав:

Такс, привіт всім:) Вирішив склєпати сайт на WORDPRESS. Встановив шаблон, редагував. Здається все довів до ума, тільки з одним проблема - колір не міняється. У всіх CSS файлах цей малиновий колір (скрін внизу) давно замінив. У ВСІХ ФАЙЛАХ. Відкриваю сайт, а там дальше те саме. Інший браузер - теж те саме. В кого які припущення, де він заховався і як його знайти?

Вангую.. вангую.. хуйню чую... коду не бачу.. тож хуй знає що передбачу...

P.S. Модератори, просто вже набридає коли вважаючи що "тиж програміст" телепатичною силою маєш знати що у коді тому якого в очі не бачиш.. тож не звірійте через лайку..

Таа? то я тіп весь код ЦСС мав кинути прям сюди? СКАЗАВ ЖЕ, В КОДІ ВСЕ ВИПРАВИВ, ПИТАВ ШО МОЖЕ БУТИ ЗА ХНЯ, РАПТОМ ХЇТОСЬ З ТАКИМ ЗУСТРІЧАВСЯ І ЗНАЄ ПРИЧИНУ НЕ ДИВЛЯЧИСЬ НА КОД...
ВОТ ПОСИЛАННЯ НА ФАЙЛИ ЦСС, ПРОСТО НЕ ДУМАВ ЩО У КОГОСЬ Є ТАКЕ БАЖАННЯ ПЕРЕДИВЛЯТИСЬ ТО ВСЬО: http://сайт-злодій/doc195372937_437095861 http://сайт-злодій/doc195372937_437095862

Такс, привіт всім:) Вирішив склєпати сайт на WORDPRESS. Встановив шаблон, редагував. Здається все довів до ума, тільки з одним проблема - колір не міняється. У всіх CSS файлах цей малиновий колір (скрін внизу) давно замінив. У ВСІХ ФАЙЛАХ. Відкриваю сайт, а там дальше те саме. Інший браузер - теж те саме. В кого які припущення, де він заховався і як його знайти?

94

(22 відповідей, залишених у PHP)

Я не знав, що php не може працювати з кирилицею. Скільки сайтів і книжок перелистав - такого ніде не писало!

95

(22 відповідей, залишених у PHP)

VTrim написав:

Тоді в файл .htaccess в кореневому каталозі впишіть наступне

AddDefaultCharset UTF-8

Ні, всерівно те саме:/

96

(22 відповідей, залишених у PHP)

VTrim написав:

Найпростішим буде такий,без різних перекодувань та масивів.

$str='привіт';
$out=null;
for($i=mb_strlen($str)-1; $i>=0; $i--)
$out.=$str[$i];
echo $out;

не працює. Та ж фігня.

97

(22 відповідей, залишених у PHP)

Буду щиро вдячний:)

VTrim написав:

ця функція не працює з кирилицею utf-8, можу написати декілька варіантів "обходу" цього.

98

(22 відповідей, залишених у PHP)

Всім привіт. Почав вчити php, перші кроки. Вирішив написати простенький код: вводиш речення, а функція міняє букви в словах задом наперед. Знайшов функцію яка все робить, щоправда міняє місцями і самі слова, але мені підійде. strrev. Все вроді супер, але одна проблема, із виводом кирилиці. Викидує крякозябрики. Добавляв кодування в html, не помогло.
Код:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Заміна слів</title>
 </head>
 <body> 
 <?php
    $line="Слово було завжди";
    $line2=strrev($line);
    echo "$line2";
    ?>
 </body>
</html>

Повторюю, я тільки почав вчити, ще зільоний, так що сільно не судіть :)

99

(6 відповідей, залишених у Електроніка)

quez написав:

Ви точно хотіли сказати "діодом"?

Тоді - так:D Просто кожен діод для роботи забирає, якщо не помиляюсь, 0.6В:) Я думав їх послідовно підключити:D

100

(6 відповідей, залишених у Електроніка)

HetmanNet написав:

Це ви про діод Зенера (стабілітрон)?

Спочатку не про нього думав, але коли почав детальніше розбиратись - зрозумів, що тут не все так просто.
Надумав резисторами зменшити напругу, треба було 2 рез. 10кОм і 3.3кОм, та потужність мене насторожила, 9Вт. Вони по суті є дуже великими, тому я вирішив, мені дешевше купити БЖ за такими характеристиками:) До речі знайшов вчора свій старий БЖ, а він якраз підходить по всіх параметрах:) Так що тема напевно закрита:D