Помогите найти ошибки

Тема в разделе "WASM.BEGINNERS", создана пользователем winnix, 7 янв 2009.

  1. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    Вот написал процедуру ввода символов,прямо в этой процедуре перевожу ASCII строку(введенный элемент) в HEX форму и записываю это значение в массив.Например вводим с клавиатуры 65535 (ASCII = 3635353335) и в массив должно записаться FFFF...Вроде написал...Но тут куча ошибок...не могу разобраться...
    Код (Text):
    1.     STLEN EQU 5
    2.     XDI EQU 10H
    3.     ALPHALEN EQU 10H
    4. ;=========================ДАННЫЕ 
    5.     COUNT DW ?
    6.     MASOFF DW ?
    7.     MASLEN DW ?
    8.     ALPHA DB '0123456789'
    9.     PARAMETERS LABEL BYTE
    10.     MAXLEN DB 5
    11.     ACTLEN DB ?
    12.     ENTNAME DB 5 DUP(?)
    13.     XDEC DW 2 DUP(?)
    14.     REZ DW ?
    15.     Y DW 2 DUP(?)
    16.     EMPTY DB 0AH,0DH,'$'
    17.     ERR_MES DB 'INVALID DATA',0AH,0DH,'$'
    18.     MAS DW 100 DUP(?)
    19. ;==========================ПРОЦЕДУРА ВВОДА
    20. INTERF PROC
    21.     PUSH BP
    22.     MOV BP,SP
    23.     MOV AX,[BP+4]
    24.     MOV MASOFF,AX
    25.     MOV AX,[BP+6]
    26.     MOV MASLEN,AX
    27.     XOR CX,CX
    28.     PUSH CX
    29. ADD:    MOV AH,0AH
    30.     LEA DX,PARAMETERS
    31.     INT 21H
    32.     XOR AL,AL
    33.     CMP ACTLEN,AL
    34.     JE END_ENT
    35.     CMP ACTLEN,STLEN
    36.     JA VVOD_ERR
    37.     LEA SI,ENTNAME
    38.     XOR CH,CH
    39.     MOV CL,ACTLEN
    40. CHECK:  JCXZ MAKE
    41.     LEA DI,ALPHA
    42.     PUSH CX
    43.     MOV CX,ALPHALEN
    44.     MOV AL,[SI]
    45. M1: CMP AL,[DI]
    46.     JE CONTIN
    47.     INC DI
    48.     LOOP M1
    49.     POP CX
    50.     JMP VVOD_ERR
    51. CONTIN: INC SI
    52.     POP CX
    53.     DEC CX
    54.     JMP CHECK
    55. MAKE:  
    56.     LEA SI,ENTNAME
    57.     LEA DI,XDEC
    58.     XOR BX,BX
    59.     ADD SI,ACTLEN
    60.     MOV CX,ACTLEN
    61.     PUH CX
    62. M3: CMP CX,1
    63.     JE MADE
    64. M2: MOV AX,[SI]
    65.     MOV BX,BX+AX-30H
    66.     SHL BX,1
    67.     MOV BX,4*BX+BX
    68.     SUB SI,2
    69.     LOOP M2
    70. MADE:   MOV BX,BX+AX-30H
    71.     MOV [DI],BX
    72.     ADD DI,2
    73.     POP CX
    74.     LOOP M3
    75.     LEA SI,XDEC
    76.     LEA DI,XDI
    77.     LEA BX,Y
    78.     LEA BP,REZ
    79.     MOV CX,2
    80.     ADD SI,ACTLEN-1
    81.     ADD BX,ACTLEN-1
    82.     MOV DX,0
    83. M4: MOV AX,[SI]
    84.     DIV WORD PTR [DI]
    85.     MOV BX,AX
    86.     SUB SI,TYPE XDEC
    87.     SUB BX,TYPE Y
    88.     LOOP M4
    89.     MOV DS:[BP],DX
    90.     LEA SI,Y
    91.     ADD BP.TYPE REZ/2
    92.     CMP SI,DI
    93.     JAE M4
    94.     LEA SI,MAS
    95.     MOV BX,REZ
    96.     MOV [SI+COUNT],BX
    97.     MOV BX,COUNT
    98.     INC BX
    99.     INC BX
    100.     MOV COUNT,BX
    101.     MOV AH,09H
    102.     LEA DX,EMPTY
    103.     INT 21H
    104.     MOV CX,ACTLEN
    105.     INC CX
    106.     PUSH CX
    107.     CMP CX,MASLEN
    108.     JE END_ENT
    109.     JMP ADD
    110. VVOD_ERR:MOV AH,09H
    111.     LEA DX,ERR_MES
    112.     INT 21H
    113.     JMP ADD
    114. END_ENT:POP CX
    115.     MOV [BP+8],CX
    116.     POP BP
    117.     RET 4
    118. INTERF ENDP
    119.  
    120. ;========================ВЫЗОВ ПРОЦЕДУРЫ В ОСНОВНОЙ ПРОГРАММЕ
    121.     PUSH (LENGTH MAS)/10
    122.     LEA SI,MAS
    123.     PUSH SI
    124.     CALL INTERF
    Помогите пожалуйста...Работаю на старом MASMe...
     
  2. stellaco

    stellaco New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    193
    сделайте коментарии к строкам кода...........будет проще ошибки искать)
    Код не смотрел..но думаю..что возможно..Вы не................... вобщем..
    книга "Микропроцессоры intel" Барри Брэй ... 332 - 336 страницы..... код программы..который очень похож, на то..что Вы делаете..... со всеми пояснениями и комментариями...
     
  3. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Тебе не лень самому разобраться? Ведь код большой и ты пишешь что в нем "много" ошибок?
    Это в DOS'е что ли?
     
  4. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    Не лень...вот я сижу и разбираюсь.Только результат не очень.
    Ага.
     
  5. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    А где такую книжку можно скачать бесплатно?Тут на форуме вроде нет.Гуглю и нахожу только платные издания...
     
  6. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Насколько я понял ALPHA нужно для проверки ввода цифр. Может лучше сделать так:
    Код (Text):
    1. ;Ввод цифр в строку. Enter - окончание ввода
    2. org 100h
    3. push ds
    4. pop  es
    5. mov  di,text
    6. input:xor   ax,ax
    7.       int   16h
    8.       mov   [es:di],al
    9.       movzx eax,al
    10.       bt    [numbers],eax
    11.       adc   di,0
    12.       cmp   al,13
    13. jne input
    14. mov [es:di],ah
    15. ret
    16. numbers dd 0,1111111111000000000000000b,0,0,0,0,0,0
    17. text    db 256 dup(0)
     
  7. stellaco

    stellaco New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    193
    winnix
    Нигде в инете не видел),... там больше 1300 страниц.... причём отличного качества.. (бумага...) ... но качество информации в ней..ещё лучше.....
    Лучшая книга по асму и процессорам (какую видел...а видел много..)... стоимость мизерная для такой литературы..... лучше купи =)
     
  8. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    Спасибо большое ВАМ всем.

    Мне кажется у меня получился какой то сложный непонятный алгоритм...Наверно можно весь перевод сделать проще...Только вот как...не могу придумать...Да и этот то алгоритм не работает толком...
     
  9. stellaco

    stellaco New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    193
    winnix
    и ещё...токачто наткнулся..
    Юрий Магда "Ассемблер для процессоров Intel Pentium" стр 189 - 200 стр...
    В электронном варианте, есть точно...