дайте инфу по этому вопросу.. с хорошими комментариями.. вот моя прога... без сопроцессора вроде работает... не понятно почему использую 3 переменные для ввода??? dm db 6 ;maksimalnij razmer bufera dr db ? ;razmer bufera posle vvoda chisla buf db 6 dup (?) ; поясните пожалуйста каким образом.. если я задаю адрес dm , то в dr появляется реально введенная строка.. и вобще потом работаю с buf.. и если можно инфу по этому... тобешь по вводу и по выводу.. п.с. демаю хранить переменные в сопроцессоре, потому, что они в регистрах могут не поместиться.. хотя предусмотрел и для регистра ах.. а впринципе это РГР по проге. задание звучит так.. "напишите программу, которая выполняет вычитание двух введеных целых шестизначных чисел в формате ASCII и выводит результат. Предусмотреть выполнение операции вычитания для N колличества пар чисел" заранее благодарю... если что пишите в icq:198830403 jabber:qnx@jabber.kiev.ua Код (Text): .model small .stack 100h .data dm db 6 ;maksimalnij razmer bufera dr db ? ;razmer bufera posle vvoda chisla buf db 6 dup (?) ; mes1 db 'Enter str_1: $' mes2 db 13,10,'Enter str_2: $' d dw 10 .code stt: mov ax,DGROUP mov ds,ax finit ;inicializacija soprocessora mov dx,offset mes1 mov ah,9 int 21h ;vivod priglashenija na vvod mov dx,offset dm ;pomestit v dx adres nachala bufera mov ax,0Ah int 21h ;schitat stroku vvedenih sinvolov v bufer mov cx,1 pppovt: fldz ;pomestit v stek soprocessora 0 push cx ;ispolzuetsa, chtob 2 raza ispolzovat odin i tot ge kod vvoda xor ax,ax ;obnulenie xor bx,bx xor cx,cx xor di,di mov cl,dr ;kollichestvo realno vvedenih simvolov iii: mov bl,byte ptr buf[di] ;pomestit v bl element bufera sub bl,'0' ;vichetanie znachenija '0' v rezultate chego poluchaetsa chislovoj ekvivalent ;proverka chislo li eto mul d ;umnogit sodergimoe ax na d, chtob potom pribavit edenici add ax,bx ;pribavlenie k ax edenic fmul 10 ;umnogenie dla registra soprocessora fadd bx ;pribavlenie bx k registru soprocesora,gde nahoditsa chislo inc di ;uvilechenie di, perexod k sledujushemu simvolu loop iii ;povtorit poka preobrazujetsa vse vvedenie simvoli push ax ;pomestit ax v stek mov dx,offset mes2 mov ah,9 int 21h ;vivod priglashenija na vvod mov dx,offset dm ;pomestit v dx adres nachala bufera mov ax,0Ah int 21h ;schitat stroku vvedenih sinvolov v bufer pop cx loop pppovt mov ax,4c00h int 21h end stt
кстати я там почитал и другие сообщения форума... там есть рекомендации в инфе на сайте поискать, дык я на сайте вобще как-то найти нормально ничего не могу... тольом не отображается о чем статья....))) так что если есть возможность лучше прямые линки..
qnx каким образом.. если я задаю адрес dm , то в dr появляется реально введенная строка.. и вобще потом работаю с buf Так устроена функция 0Ah прерывания int21h. Ей передается адрес области памяти в первом байте (у тебя это dm) которой необходимо указать сколько символов можно поместить в буфер (buf), во второй байт (dr) функция запишет сколько символов она поместила в буфер, с третьего байта начинается буфер.