Вот написал процедуру ввода символов,прямо в этой процедуре перевожу ASCII строку(введенный элемент) в HEX форму и записываю это значение в массив.Например вводим с клавиатуры 65535 (ASCII = 3635353335) и в массив должно записаться FFFF...Вроде написал...Но тут куча ошибок...не могу разобраться... Код (Text): STLEN EQU 5 XDI EQU 10H ALPHALEN EQU 10H ;=========================ДАННЫЕ COUNT DW ? MASOFF DW ? MASLEN DW ? ALPHA DB '0123456789' PARAMETERS LABEL BYTE MAXLEN DB 5 ACTLEN DB ? ENTNAME DB 5 DUP(?) XDEC DW 2 DUP(?) REZ DW ? Y DW 2 DUP(?) EMPTY DB 0AH,0DH,'$' ERR_MES DB 'INVALID DATA',0AH,0DH,'$' MAS DW 100 DUP(?) ;==========================ПРОЦЕДУРА ВВОДА INTERF PROC PUSH BP MOV BP,SP MOV AX,[BP+4] MOV MASOFF,AX MOV AX,[BP+6] MOV MASLEN,AX XOR CX,CX PUSH CX ADD: MOV AH,0AH LEA DX,PARAMETERS INT 21H XOR AL,AL CMP ACTLEN,AL JE END_ENT CMP ACTLEN,STLEN JA VVOD_ERR LEA SI,ENTNAME XOR CH,CH MOV CL,ACTLEN CHECK: JCXZ MAKE LEA DI,ALPHA PUSH CX MOV CX,ALPHALEN MOV AL,[SI] M1: CMP AL,[DI] JE CONTIN INC DI LOOP M1 POP CX JMP VVOD_ERR CONTIN: INC SI POP CX DEC CX JMP CHECK MAKE: LEA SI,ENTNAME LEA DI,XDEC XOR BX,BX ADD SI,ACTLEN MOV CX,ACTLEN PUH CX M3: CMP CX,1 JE MADE M2: MOV AX,[SI] MOV BX,BX+AX-30H SHL BX,1 MOV BX,4*BX+BX SUB SI,2 LOOP M2 MADE: MOV BX,BX+AX-30H MOV [DI],BX ADD DI,2 POP CX LOOP M3 LEA SI,XDEC LEA DI,XDI LEA BX,Y LEA BP,REZ MOV CX,2 ADD SI,ACTLEN-1 ADD BX,ACTLEN-1 MOV DX,0 M4: MOV AX,[SI] DIV WORD PTR [DI] MOV BX,AX SUB SI,TYPE XDEC SUB BX,TYPE Y LOOP M4 MOV DS:[BP],DX LEA SI,Y ADD BP.TYPE REZ/2 CMP SI,DI JAE M4 LEA SI,MAS MOV BX,REZ MOV [SI+COUNT],BX MOV BX,COUNT INC BX INC BX MOV COUNT,BX MOV AH,09H LEA DX,EMPTY INT 21H MOV CX,ACTLEN INC CX PUSH CX CMP CX,MASLEN JE END_ENT JMP ADD VVOD_ERR:MOV AH,09H LEA DX,ERR_MES INT 21H JMP ADD END_ENT:POP CX MOV [BP+8],CX POP BP RET 4 INTERF ENDP ;========================ВЫЗОВ ПРОЦЕДУРЫ В ОСНОВНОЙ ПРОГРАММЕ PUSH (LENGTH MAS)/10 LEA SI,MAS PUSH SI CALL INTERF Помогите пожалуйста...Работаю на старом MASMe...
сделайте коментарии к строкам кода...........будет проще ошибки искать) Код не смотрел..но думаю..что возможно..Вы не................... вобщем.. книга "Микропроцессоры intel" Барри Брэй ... 332 - 336 страницы..... код программы..который очень похож, на то..что Вы делаете..... со всеми пояснениями и комментариями...
Тебе не лень самому разобраться? Ведь код большой и ты пишешь что в нем "много" ошибок? Это в DOS'е что ли?
А где такую книжку можно скачать бесплатно?Тут на форуме вроде нет.Гуглю и нахожу только платные издания...
Насколько я понял ALPHA нужно для проверки ввода цифр. Может лучше сделать так: Код (Text): ;Ввод цифр в строку. Enter - окончание ввода org 100h push ds pop es mov di,text input:xor ax,ax int 16h mov [es:di],al movzx eax,al bt [numbers],eax adc di,0 cmp al,13 jne input mov [es:di],ah ret numbers dd 0,1111111111000000000000000b,0,0,0,0,0,0 text db 256 dup(0)
winnix Нигде в инете не видел),... там больше 1300 страниц.... причём отличного качества.. (бумага...) ... но качество информации в ней..ещё лучше..... Лучшая книга по асму и процессорам (какую видел...а видел много..)... стоимость мизерная для такой литературы..... лучше купи =)
Спасибо большое ВАМ всем. Мне кажется у меня получился какой то сложный непонятный алгоритм...Наверно можно весь перевод сделать проще...Только вот как...не могу придумать...Да и этот то алгоритм не работает толком...
winnix и ещё...токачто наткнулся.. Юрий Магда "Ассемблер для процессоров Intel Pentium" стр 189 - 200 стр... В электронном варианте, есть точно...