Всех приветствую! Помогите, пожалуйста, разобраться с регистрами, помещающимися в [] (квадратные скобки). В частности, как с их помощью считать байт по нужному адресу и записать его обратно. Помнится, на форуме были примеры с преобразованием текстового файла (увеличением кода каждого символа на 1). К сожалению, все они (по крайней мере найденные мной) под Win. Я попытался сделать по-простому, но у меня получается ошибка A2031 (Яндекс говорит, это "error A2031: must be index or base register"). Вот текст: Код (Text): .286 CSEG segment assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG org 100h begin: mov ax,3D02h mov dx,offset File_name int 21h mov Handle,bx mov ah,3Fh mov dx,offset Finish mov cx,255 int 21h mov Length_F,cx cycle: ;Основной цикл. В dx - адрес начала загруженного файла. mov ah,byte ptr cs:[dx] ;Прочтём первый байт в ah inc ah ;Считанное значение в ah увеличим на 1. mov byte ptr cs:[dx],ah ;Запишем обратно. inc dx ;Перейдём к следующему байту. loop cycle ;В cx - длина. Пока не обнулится cx - на метку. mov ax,4200h xor dx,dx xor cx,cx int 21h mov ah,40h mov dx,offset Finish mov cx,Length_F int 21h mov ah,3Eh mov bx,Handle int 21h File_name db '111.txt',0,'!$' Handle dw 0 Length_F dw 0 Finish equ $ CSEG ends end begin Проблемные строки выделены комментариями. Пытался грузить и в ah и в ax, и даже другие регистры. Прошу ногами особо не бить Лучше кинуть на енто дело ссылочку.
А мой старый друг _mm_ )) Я бы Вам посоветовал Юрова почитать от начала до конца, хорошая книга! Код (Text): .286 CSEG segment assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG org 100h begin: mov ax,3D02h mov dx,offset File_name int 21h mov Handle,ax mov ah,3Fh mov dx,offset Finish mov bx,word ptr [Handle] mov cx,9 int 21h mov Length_F,cx mov si,dx cycle: ;Основной цикл. В dx - адрес начала загруженного файла. mov ah,byte ptr cs:[si] ;Прочтём первый байт в ah inc ah ;Считанное значение в ah увеличим на 1. mov byte ptr cs:[si],ah ;Запишем обратно. inc si ;Перейдём к следующему байту. loop cycle ;В cx - длина. Пока не обнулится cx - на метку. mov ax,4200h xor dx,dx xor cx,cx int 21h mov ah,40h mov dx,offset Finish mov cx,Length_F int 21h mov ah,3Eh mov bx,Handle int 21h ret В текстовом файле 111.тхт впиши цифры 012345678, что бы увидеть как они увеличатся не единицу. Надеюсь ты это хотел увидеть
Дорогой pashe4ka13! Огромное спасибо за помощь. Книжки такой пока нет, но есть весьма интересные талмуды Пильщикова, Пирогова, Голубя, Жукова с Авдюхиным (а подвиг на изучение ассемлера меня г-н Калашников). Буду изучать!