Студентам с вопросами о лабораторных работах сюда

Тема в разделе "WASM.BEGINNERS", создана пользователем IceStudent, 11 ноя 2006.

  1. Mariaaa

    Mariaaa New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2007
    Сообщения:
    1
    Помогите с ассемблером.
    Есть программа которая создает файл и записывает туда строку. Потом открывает любой файл, считывает его и выводит и выводит всё его содержимое на экран. А мне нужно чтобы выводились на экран только те слова, вкоторых есть сочетание букв erv. Помогите доделать программу пожалуйста!
    Вот прога:
    Код (Text):
    1. ideal
    2. model small
    3. stack 256
    4.  
    5. dataseg
    6. filename  db 40 dup(24h)
    7. str1      db 80 dup(24h)
    8. nl        db 10,13,24h
    9. handle    dw 0
    10. msg_file_create db '‚ўҐ¤ЁвҐ Ё¬п ᮧ¤ ў Ґ¬®Ј® д ©« :',10,13,24h
    11. msg_file_open   db '‚ўҐ¤ЁвҐ Ё¬п ®вЄалў Ґ¬®Ј® д ©« :',10,13,24h
    12. msg_str         db '‚ўҐ¤ЁвҐ бва®Єг:',10,13,24h
    13. msg_er_create   db 'ЋиЁЎЄ  ЇаЁ ᮧ¤ ­ЁЁ д ©« !',10,13,24h
    14. msg_er_open     db 'ЋиЁЎЄ  ЇаЁ ®вЄалвЁЁ д ©« !',10,13,24h
    15.  
    16. codeseg
    17. startupcode
    18.  
    19. ; Ї®«г祭ЁҐ Ё¬Ґ­Ё ᮧ¤ ў Ґ¬®Ј® д ©«
    20. mov ah,09h
    21. lea dx,[msg_file_create]
    22. int 21h
    23. mov ah,0Ah
    24. lea dx,[filename]
    25. int 21h
    26. mov ah,09h
    27. lea dx,[nl]
    28. int 21h
    29.  
    30. ; ASCII -> ASCIIZ
    31. xor ax,ax
    32. mov al,[filename+1]
    33. mov si,ax
    34. mov [filename+2+si],0
    35.  
    36. ; ᮧ¤ ­ЁҐ д ©«
    37. xor cx,cx
    38. mov ah,3Ch
    39. lea dx,[filename+2]
    40. int 21h
    41.  
    42. jnc next1
    43.  
    44. er_create:
    45. mov ah,09h
    46. lea dx,[msg_er_create]
    47. int 21h
    48. jmp exit
    49.  
    50. next1:
    51. mov [handle],ax
    52.  
    53. ; Ї®«г祭ЁҐ бва®ЄЁ
    54. mov ah,09h
    55. lea dx,[msg_str]
    56. int 21h
    57. mov ah,0Ah
    58. lea dx,[str1]
    59. int 21h
    60. mov ah,09h
    61. lea dx,[nl]
    62. int 21h
    63.  
    64. ; § ЇЁбм бва®ЄЁ
    65. xor cx,cx
    66. mov cl,[str1+1]
    67. mov bx,[handle]
    68. lea dx,[str1+2]
    69. mov ah,40h
    70. int 21h
    71.  
    72. ; § ЄалвЁҐ д ©«
    73. mov ah,3Eh
    74. int 21h
    75.  
    76. ; Ї®«г祭ЁҐ Ё¬Ґ­Ё ®вЄалў Ґ¬®Ј® д ©«
    77. mov ah,09h
    78. lea dx,[msg_file_open]
    79. int 21h
    80. mov ah,0Ah
    81. lea dx,[filename]
    82. int 21h
    83. mov ah,09h
    84. lea dx,[nl]
    85. int 21h
    86.  
    87. ; ASCII -> ASCIIZ
    88. xor ax,ax
    89. mov al,[filename+1]
    90. mov si,ax
    91. mov [filename+2+si],0
    92.  
    93. ; ®вЄалвлҐ д ©«
    94. mov ah,3Dh
    95. mov al,00b
    96. ;mov al,2
    97. lea dx,[filename+2]
    98. int 21h
    99. jnc next2
    100.  
    101. er_open:
    102. mov ah,09h
    103. lea dx,[msg_er_open]
    104. int 21h
    105. jmp exit
    106.  
    107. next2:
    108. mov [handle],ax
    109. mov bx,ax
    110.  
    111. ; з⥭ЁҐ д ©«
    112. read:
    113. mov ah,3Fh
    114. mov cx,79
    115. lea dx,[str1]
    116. int 21h
    117.  
    118. mov di,ax
    119. mov [str1+di],24h
    120.  
    121. ; ўлў®¤ бзЁв ­­ле ¤ ­­ле
    122. mov ah,09h
    123. lea dx,[str1]
    124. int 21h
    125.  
    126. cmp di,cx
    127. jb close
    128. jmp read
    129.  
    130. ; § ЄалвЁҐ д ©«
    131. close:
    132. mov bx,[handle]
    133. mov ah,3Eh
    134. int 21h
    135.  
    136. exit:
    137. exitcode
    138. end
     
  2. CrazyFun

    CrazyFun New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2005
    Сообщения:
    129
    Lastfrag
    ошибка у тебя с выводом на экран. смотри в отладчик.
    такое у меня работает нормально:
    Код (Text):
    1. .286
    2. .model tiny
    3. code segment para public 'code'
    4. assume cs:code,ds:code,ss:code
    5. org 100h
    6. main:  
    7. jmp a
    8.   res db 0,0,'h','$'
    9. a:  
    10.   mov ax,82h
    11.   mov bx,50h
    12.   sub  ax,bx
    13.   mov ah,al
    14.   and al,0Fh
    15.   and ah,0F0h
    16.   shr ah,4
    17.   add al,30h
    18.   add ah,30h
    19.   mov res,ah
    20.   mov res+1,al
    21.   xor ax,ax
    22.  
    23.   mov ah,9
    24.   mov dx, offset res
    25.   int 21h
    26.   mov ax,4c00h
    27.   int 21h
    28. end main
     
  3. Lastfrag

    Lastfrag New Member

    Публикаций:
    0
    Регистрация:
    11 ноя 2007
    Сообщения:
    3
    CrazyFun спасибо действительно работает :)Но хотелось бы все таки узнать где в моем коде проблема?Вот переписал код заного,теперь выводит непонятный мусор.И опять не понимаю в чем ошибка.
    З.Ы.Ы спасибо за потраченое время :)
    Код (Text):
    1. csg segment 'CODE'
    2. assume cs:csg,ds:dsg,ss:ssg
    3.  
    4. main:
    5.  mov ax, 0FCh
    6.  mov bx, 7Fh
    7.  sub ax, bx
    8. ;-------------------
    9.  mov dl, al
    10.  
    11.  lea bx, tabidx
    12.  
    13.  lea si, result
    14.  
    15.  mov al, dl
    16.  and al, 0f0h    
    17.  xlat        
    18.  mov [si], al
    19.  
    20. ;----------------
    21.  mov al, dl
    22.  and al, 0fh  
    23.  xlat            
    24.  inc si
    25.  mov [si], al
    26. :------------------
    27.  mov ah,09h
    28.  mov dx,offset result
    29.  int 21h
    30. ;--------------------
    31.  mov ax,4c00h
    32.  int 21h
    33.  
    34. csg ends
    35. dsg segment 'DATA'
    36.   tabidx db '0123456789ABCDEF'
    37.   result db '**h',10,13,'$'
    38. dsg ends
    39. ssg segment stack 'STACK'
    40.   dw 128 dup(0)
    41. ssg ends
    42.   end main
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Lastfrag
    82h, 50h и результат - это BCD числа? Если нет, т.е. обычные 16-ричные значения, то зачем в коде DAS?

    А "mov cl,4 / shr ax,cl" куда дели?
     
  5. Lastfrag

    Lastfrag New Member

    Публикаций:
    0
    Регистрация:
    11 ноя 2007
    Сообщения:
    3
    Quantum ахаххаа спасибо большое!Собственно в DAS и заключалась ошибка :)Просто глядел,литературу по асэмблеру и вот что вычитал :
    Это делается так же, как и при сложении, но команда DAS должна следовать за вычитанием. Здесь тоже допустимы только байтовые операции.
    Однако был невнимателен и не прочитал,что это лишь для BCD чисел.
     
  6. Ivan_assm

    Ivan_assm New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2007
    Сообщения:
    132
    Адрес:
    Везде и нигде
    начал учить asm.
    вроде все понятно...
    но вошел в ступор, медитация помогает но медленно....
    есть код который рисует одно окошечко закрашенное в другом 5 раз...
    Код (Text):
    1. :0100 XOR AL,AL
    2. :0102 MOV BH,10
    3. :0104 MOV CH,05
    4. :0106 MOV CL,10
    5. :0108 MOV DH,10
    6. :010A MOV DL,3E
    7. :010C MOV AH,06
    8. :010E INT 10
    9. :0110 CALL 011E
    10. :0113 CALL 011E  
    11. :0116 CALL 011E
    12. :0119 CALL 011E
    13. :011C INT 20    
    14. :011E ADD BH,10
    15. :0121 ADD CH,01
    16. :0124 ADD CL,01
    17. :0127 SUB DH,01
    18. :012A SUB DL,01
    19. :012D INT 10
    20. :012F RET
    это доступно для моего сознания и понятно...
    задача вот в чем: как добиться того чтобы использовать только один раз call и зациклить его Loop 'ом с использованием стека??
    ведь CX занят координатами окошка.как грамотно расставить PUSH и POP?
     
  7. Ivan_assm

    Ivan_assm New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2007
    Сообщения:
    132
    Адрес:
    Везде и нигде
    уже не надо отвечать...сам разобрался...))))
     
  8. BlackSiriuS

    BlackSiriuS New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2007
    Сообщения:
    3
    плиз помогите
    есть две задачи:
    1.Нужно заставить бегать (по идеи выбирая случайные координаты и что бы туда плавно двигался) ромбик
    мне помогли и для MASM вот сделали но он не хочет компилироваться на MASM 8
    Код (Text):
    1. .486
    2. .model flat
    3. include include/kernel32.inc
    4. include include/user32.inc
    5. include include/gdi32.inc
    6. .code
    7. public _start
    8. _start:
    9.     push    ebp
    10.     mov    ebp,esp
    11.     xor    ebx,ebx
    12.     push    ebx
    13.     call    GetModuleHandle
    14.     mov    hinst,eax
    15.     mov    rombik.hInstance,eax
    16.     push    IDI_WINLOGO
    17.     push    ebx
    18.     call    LoadIcon
    19.     mov    rombik.hIcon,eax
    20.     push    IDC_ARROW
    21.     push    ebx
    22.     call    LoadCursor
    23.     mov    rombik.hCursor,eax
    24.     push    offset rombik
    25.     call    RegisterClassEx
    26.    
    27.    
    28.     push    ebx
    29.     push    hinst
    30.     push    ebx
    31.     push    ebx
    32.     push    CW_USEDEFAULT
    33.     push    CW_USEDEFAULT
    34.     push    CW_USEDEFAULT
    35.     push    CW_USEDEFAULT
    36.     push    WS_CAPTION+WS_VISIBLE+WS_SYSMENU
    37.     push    offset name_romb
    38.     push    offset name_romb
    39.     push    ebx
    40.     call    CreateWindowEx
    41.    
    42. cycl_msg:
    43.     push    ebx
    44.     push    ebx
    45.     push    ebx
    46.     push    offset romb_msg
    47.     call    GetMessage
    48.     or    eax,eax
    49.     jz    end_cycl_msg
    50.  
    51.     push    offset romb_msg
    52.     call    TranslateMessage
    53.  
    54.     push    offset romb_msg
    55.     call    DispatchMessage
    56.     jmp    cycl_msg
    57. end_cycl_msg:
    58.     mov    esp,ebp
    59.     pop    ebp
    60.     ret
    61.  
    62.  
    63. romb_main:
    64. ;-----    
    65.     push    ebp
    66.     mov    ebp,esp
    67.     mov    eax,[ebp+12]
    68.     cmp    eax,WM_CREATE
    69.     je    wmcreate
    70.     cmp    eax,WM_DESTROY
    71.     je    wmdestroy
    72.     cmp    eax,WM_PAINT
    73.     je    wmpaint
    74.     mov    esp,ebp
    75.     pop    ebp
    76.     jmp    DefWindowProc
    77. wmcreate:
    78. assume edi:PTR RECT
    79.     mov    directn,ebx
    80.     mov    edi,offset client_rect
    81.     push    edi
    82.     push    [ebp+8]
    83.     call    GetClientRect
    84.     mov    esi,offset romb_vertices
    85.     mov    ecx,[edi].right
    86.     shr    ecx,1
    87.     mov    eax,ecx
    88.     mov    [esi+8],eax
    89.     mov    [esi+24],eax
    90.     sub    eax,50
    91.     mov    [esi],eax
    92.     add    ecx,50
    93.     mov    [esi+16],ecx
    94.     mov    ecx,[edi].bottom
    95.     shr    ecx,1
    96.     mov    eax,ecx
    97.     mov    [esi+4],ecx
    98.     mov    [esi+20],ecx
    99.     sub    eax,70
    100.     mov    [esi+12],eax
    101.     add    ecx,70
    102.     mov    [esi+28],ecx
    103.     push    timer_proc
    104.     push    10
    105.     push    1
    106.     push    [ebp+8]
    107.     call    SetTimer
    108.     jmp     exit_false
    109. wmdestroy:
    110.     push    1
    111.     push    [ebp+8]
    112.     call    KillTimer
    113.     push    ebx
    114.     call    PostQuitMessage
    115.     jmp     exit_wndproc
    116. wmpaint:
    117.     sub    esp,size PAINTSTRUCT
    118.     mov    esi,esp
    119. assume    esi:PTR PAINTSTRUCT
    120.     push    esi
    121.     push    [ebp+8]
    122.     call    BeginPaint
    123.     push    4
    124.     push    offset romb_vertices
    125.     push    eax
    126.     call    Polygon
    127.     push    esi
    128.     push    [ebp+8]
    129.     call    EndPaint
    130.     jmp    exit_false
    131. exit_false:
    132.     xor    eax,eax
    133. exit_wndproc:
    134.     mov     esp,ebp
    135.     pop     ebp
    136.     ret    16
    137.  
    138. timer_proc:
    139.     lea    esi,romb_vertices
    140.     mov    eax,10
    141.     cmp    directn,1
    142.     jz    move_right
    143.     sub    dword ptr [esi],eax    
    144.     sub    dword ptr [esi+8],eax
    145.     sub    dword ptr [esi+16],eax    
    146.     sub    dword ptr [esi+24],eax
    147.     cmp    dword ptr [esi],0
    148.     jns    @f
    149.     mov    directn,1
    150. @@:
    151.     jmp    paint
    152.  
    153. move_right:
    154.     add    dword ptr [esi],eax    
    155.     add    dword ptr [esi+8],eax
    156.     add    dword ptr [esi+16],eax    
    157.     add    dword ptr [esi+24],eax
    158.     mov    ecx,dword ptr client_rect+8
    159.     cmp    ecx,dword ptr [esi+16]
    160.     ja    @f
    161.     mov    directn,0
    162. @@:
    163. paint:
    164.     mov    eax,[esp+4]
    165.     push    1
    166.     push    offset client_rect
    167.     push    eax
    168.     call    InvalidateRect
    169.     ret    16
    170.    
    171. .data
    172. rombik WNDCLASSEX<size rombik,CS_HREDRAW+CS_VREDRAW,\
    173.                offset romb_main,0,0,0,0, \
    174.                0,COLOR_MENU+1,0,offset name_romb,0>
    175.  
    176.  
    177. name_romb  db 'Romb',0
    178.  
    179.  
    180. .data?
    181. romb_vertices    dd 8 dup(?)
    182. client_rect    RECT<?>
    183. directn    dd ?
    184. hinst    dd ?
    185. hwnd    dd ?
    186. romb_msg    MSG<?>
    187. end
    2.нужно что бы с цветного рисунка делала черно-белый
     
  9. Ivan_assm

    Ivan_assm New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2007
    Сообщения:
    132
    Адрес:
    Везде и нигде
    не хочет компилироваться? - а может надо писать не
    а

    или masm у тебя прям так,без отдельной папки, на диске лежит?...
     
  10. BlackSiriuS

    BlackSiriuS New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2007
    Сообщения:
    3
    Ivan_assm
    при компилировании выдает ошибки
    Код (Text):
    1. Assembling: romb.asm
    2. \masm32\include\kernel32.inc(8) : error A2119: ied
    3. \masm32\include\kernel32.inc(11) : error A2119: ied
    4. \masm32\include\kernel32.inc(13) : error A2119: ied
    5. \masm32\include\kernel32.inc(15) : error A2119: ied
    6. \masm32\include\kernel32.inc(16) : error A2119: ied
    7. \masm32\include\kernel32.inc(17) : error A2119: ied
    8. \masm32\include\kernel32.inc(18) : error A2119: ied
    9. \masm32\include\kernel32.inc(19) : error A2119: ied
    10. \masm32\include\kernel32.inc(20) : error A2119: ied
    11. \masm32\include\kernel32.inc(23) : error A2119: ied
    12. \masm32\include\kernel32.inc(24) : error A2119: ied
    13. \masm32\include\kernel32.inc(25) : error A2119: ied
    14. \masm32\include\kernel32.inc(28) : error A2119: ied
    15. \masm32\include\kernel32.inc(31) : error A2119: ied
    16. \masm32\include\kernel32.inc(32) : error A2119: ied
    17. \masm32\include\kernel32.inc(33) : error A2119: ied
    18. \masm32\include\kernel32.inc(36) : error A2119: ied
    19. \masm32\include\kernel32.inc(37) : error A2119: ied
    20. \masm32\include\kernel32.inc(38) : error A2119: ied
    21. \masm32\include\kernel32.inc(39) : error A2119: ied
    22. \masm32\include\kernel32.inc(40) : error A2119: ied
    23. \masm32\include\kernel32.inc(41) : error A2119: ied
    24. \masm32\include\kernel32.inc(42) : error A2119: ied
    25. \masm32\include\kernel32.inc(43) : error A2119: ied
    26. \masm32\include\kernel32.inc(44) : error A2119: ied
    27. \masm32\include\kernel32.inc(45) : error A2119: ied
    28. \masm32\include\kernel32.inc(48) : error A2119: ied
    29. \masm32\include\kernel32.inc(49) : error A2119: ied
    30. \masm32\include\kernel32.inc(50) : error A2119: ied
    31. \masm32\include\kernel32.inc(53) : error A2119: ied
    32. \masm32\include\kernel32.inc(54) : error A2119: ied
    33. \masm32\include\kernel32.inc(55) : error A2119: ied
    34. \masm32\include\kernel32.inc(56) : error A2119: ied
    35. \masm32\include\kernel32.inc(57) : error A2119: ied
    36. \masm32\include\kernel32.inc(58) : error A2119: ied
    37. \masm32\include\kernel32.inc(61) : error A2119: ied
    38. \masm32\include\kernel32.inc(64) : error A2119: ied
    39. \masm32\include\kernel32.inc(65) : error A2119: ied
    40. \masm32\include\kernel32.inc(66) : error A2119: ied
    41. \masm32\include\kernel32.inc(67) : error A2119: ied
    42. \masm32\include\kernel32.inc(70) : error A2119: ied
    43. \masm32\include\kernel32.inc(73) : error A2119: ied
    44. \masm32\include\kernel32.inc(74) : error A2119: ied
    45. \masm32\include\kernel32.inc(75) : error A2119: ied
    46. \masm32\include\kernel32.inc(78) : error A2119: ied
    47. \masm32\include\kernel32.inc(79) : error A2119: ied
    48. \masm32\include\kernel32.inc(80) : error A2119: ied
    49. \masm32\include\kernel32.inc(83) : error A2119: ied
    50. \masm32\include\kernel32.inc(86) : error A2119: ied
    51. \masm32\include\kernel32.inc(87) : error A2119: ied
    52. \masm32\include\kernel32.inc(88) : error A2119: ied
    53. \masm32\include\kernel32.inc(91) : error A2119: ied
    54. \masm32\include\kernel32.inc(92) : error A2119: ied
    55. \masm32\include\kernel32.inc(93) : error A2119: ied
    56. \masm32\include\kernel32.inc(96) : error A2119: ied
    57. \masm32\include\kernel32.inc(97) : error A2119: ied
    58. \masm32\include\kernel32.inc(100) : error A2119: ied
    59. \masm32\include\kernel32.inc(101) : error A2119: ied
    60. \masm32\include\kernel32.inc(104) : error A2119: ied
    61. \masm32\include\kernel32.inc(105) : error A2119: ied
    62. \masm32\include\kernel32.inc(108) : error A2119: ied
    63. \masm32\include\kernel32.inc(109) : error A2119: ied
    64. \masm32\include\kernel32.inc(110) : error A2119: ied
    65. \masm32\include\kernel32.inc(113) : error A2119: ied
    66. \masm32\include\kernel32.inc(114) : error A2119: ied
    67. \masm32\include\kernel32.inc(115) : error A2119: ied
    68. \masm32\include\kernel32.inc(118) : error A2119: ied
    69. \masm32\include\kernel32.inc(119) : error A2119: ied
    70. \masm32\include\kernel32.inc(120) : error A2119: ied
    71. \masm32\include\kernel32.inc(122) : error A2119: ied
    72. \masm32\include\kernel32.inc(123) : error A2119: ied
    73. \masm32\include\kernel32.inc(124) : error A2119: ied
    74. \masm32\include\kernel32.inc(127) : error A2119: ied
    75. \masm32\include\kernel32.inc(128) : error A2119: ied
    76. \masm32\include\kernel32.inc(130) : error A2119: ied
    77. \masm32\include\kernel32.inc(133) : error A2119: ied
    78. \masm32\include\kernel32.inc(134) : error A2119: ied
    79. \masm32\include\kernel32.inc(135) : error A2119: ied
    80. \masm32\include\kernel32.inc(136) : error A2119: ied
    81. \masm32\include\kernel32.inc(137) : error A2119: ied
    82. \masm32\include\kernel32.inc(140) : error A2119: ied
    83. \masm32\include\kernel32.inc(141) : error A2119: ied
    84. \masm32\include\kernel32.inc(142) : error A2119: ied
    85. \masm32\include\kernel32.inc(143) : error A2119: ied
    86. \masm32\include\kernel32.inc(144) : error A2119: ied
    87. \masm32\include\kernel32.inc(147) : error A2119: ied
    88. \masm32\include\kernel32.inc(148) : error A2119: ied
    89. \masm32\include\kernel32.inc(149) : error A2119: ied
    90. \masm32\include\kernel32.inc(150) : error A2119: ied
    91. \masm32\include\kernel32.inc(151) : error A2119: ied
    92. \masm32\include\kernel32.inc(154) : error A2119: ied
    93. \masm32\include\kernel32.inc(155) : error A2119: ied
    94. \masm32\include\kernel32.inc(156) : error A2119: ied
    95. \masm32\include\kernel32.inc(157) : error A2119: ied
    96. \masm32\include\kernel32.inc(160) : error A2119: ied
    97. \masm32\include\kernel32.inc(161) : error A2119: ied
    98. \masm32\include\kernel32.inc(162) : error A2119: ied
    99. \masm32\include\kernel32.inc(165) : error A2119: ied
    100. \masm32\include\kernel32.inc(168) : error A2119: ied
    101. \masm32\include\kernel32.inc(169) : error A2119: ied
    102. \masm32\include\kernel32.inc(169) : fatal error A1012: error count exceeds 100;
    103. stopping assembly
     
  11. V_i

    V_i New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2007
    Сообщения:
    5
    Вопрос. Когда я беру из txt файла число, в каком видео оно представлено? В десятичном? и чтобы мне с ними работать обязательно ли их переводить в двоичную систему?
     
  12. MagnumGT

    MagnumGT New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    122
    Нет, число представленно в виде аски-символов.
    Да, для работы необходимо перевести строку в число. Для этого есть функция atoi()

    В МСДН она описана
     
  13. V_i

    V_i New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2007
    Сообщения:
    5
    Извини за глупый вопрос, а что такое МСДН?
     
  14. MagnumGT

    MagnumGT New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    122
    MSDN - Microsoft Develop. Network (Докумментация разработчикам от Майкрософт)

    Проще говоря описываются большинство функций и технологий Виндовс.

    msdn.microsoft.com
     
  15. V_i

    V_i New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2007
    Сообщения:
    5
    Огромное спасибо!!!
     
  16. redcat

    redcat New Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    62
    Есть задание: прочитать дорожку дискеты путем программирования контроллера НГМД. Есть работоспособный пример из БСП братьев Фроловых (http://www.frolov-lib.ru/books/bsp/v19/ch1.html#b1.4), выполняющий чтение одного сектора при помощи команды Read Data (кстати, по сути тот же пример из книги Р. Журдена «Справочник программиста ...» почему-то успешно виснет, похоже, в ожидании прерывания от DMA). Короче, добавив в пример Фроловых пару циклов в нужных местах и, соответственно, изменив два параметра, передаваемых контроллеру НГМД, читаем нужную дорожку (фрагмент с изменениями):
    Код (Text):
    1.     for (int h = 0; h<=1; h++)
    2.     {
    3.         for (int j = 1; j <= fdpt->eot; j++)
    4.         {
    5.             // Устанавливаем скорость передачи данных 500 Кбайт/с
    6.             outp(0x3F7, 0);
    7.  
    8.             // Инициализация канала прямого
    9.             // доступа к памяти
    10.             dma_init((void far *)buffer);
    11.  
    12.             // Выдаем команду "Чтение данных"
    13.             fdc_out(0x66);
    14.             fdc_out(0);     // накопитель 0, головка 0
    15.  
    16.             fdc_out(CYL);     // цилиндр CYL
    17.             fdc_out(h);       // головка 0
    18.             fdc_out(j);       // номер сектора - 1
    19.  
    20.             // Передаем контроллеру технические параметры
    21.             // дисковода, берем их из таблицы параметров дискеты.
    22.             // Это такие параметры:
    23.             //    - размер сектора;
    24.             //    - номер последнего сектора на дорожке;
    25.             //    - размер промежутка;
    26.             //    - число считываемых/записываемых байтов
    27.             fdc_out(fdpt->sec_size);
    28.             fdc_out(fdpt->eot);
    29.             fdc_out(fdpt->gap_rw);
    30.             fdc_out(fdpt->dtl);
    31.  
    32.             // Ожидаем прерывание после завершения операции
    33.             int_wait();
    34.  
    35.             // Считываем и выводим на экран байты результата
    36.             // операции "Чтение данных"
    37.             printf("\n<<<Чтение сектора>>> \n");
    38.             printf("   Байты состояния (ST0,ST1,ST2,C,H,R,N):\n");
    39.  
    40.             for(i=0; i<7; i++) printf("%02.2X\t", (char) fdc_inp());
    41.             printf("\n");
    42.  
    43.             // Выводим содержимое считанного сектора в файл
    44.             for(i=0; i<512; i++) fputc(buffer[i],sect);
    45.         }
    46.     }
    Но судя по документации Intel (http://download.intel.com/design/archives/periphrl/docs/29047504.pdf) у контроллера НГМД существует еще команда Read Track, которая вроде как должна читать дорожку целиком. Просто заменив команду fdc_out(0x66) на fdc_out(0x42) и соответственно увеличив буфер (везде меняем 512 на 512*18), нужный результат не получаем. Читается только первый сектор, как вроде и должно быть исходя из параметра sec_size. Задать sec_size равным 9216 или 18432 (по размеру дорожки) вроде невозможно – по документации Intel такие значения не кодируются. Так можно ли прочитать при помощи команды Read Track дорожку флоппи с длиной сектора 512 байт целиком и как?
     
  17. BlackSiriuS

    BlackSiriuS New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2007
    Сообщения:
    3
    вопрос какое прерывание отвечает за инициализацию модема и сетевой карты
    вообще задача:
    нужно инициализировать есть ли на компе модем или сетевая и нужно определить скорость соеденения

    задача для доса
     
  18. martino

    martino New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2007
    Сообщения:
    1
    задача такая.
    в командной строке задаются два параметра: слово и число повторений. Записать слово в файл указаное число раз.
     
  19. CrazyFun

    CrazyFun New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2005
    Сообщения:
    129
    И что? задача есть, а вопрос где? или хочешь чтобы за тебя всё делали?
     
  20. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    martino
    Код (Text):
    1. #!/usr/bin/perl -w
    2.  
    3. use strict;
    4. use warnings;
    5.  
    6. if (@ARGV == 0) {
    7.   print "usage: test.pl N string > out\n";
    8.   exit 1;
    9. }
    10.  
    11.  
    12. my $n = $ARGV[0];
    13. my $str = $ARGV[1];
    14.  
    15. for (my $i = 0; $i < $n; ++$i) {
    16.   print $str . "\n";
    17. }
    18.  
    19. # [EOF]