Имам нужда от помощ с една задача. Трябва да обработя обикновен текстов файл в ASCII и да върна колко знака от всеки код присъстват (колко a, колко b и т.н.). Сега работи почти перфектно.
Сега имам проблема, че ако във файла има разширен ASCII символ, когато използвам прекъсването на услугата 3fh, той не ги чете добре.
Например, ако файлът има é (ascii код 130), той чете ß (ascii код 225). Страхувам се, че използвам прекъсването погрешно, но не знам какво да правя, така че малко помощ тук ще бъде много оценена. Дебъгването също не помага, защото прекъсването се изпълнява добре без грешки, просто се връща с грешни стойности в буфера.
Това е точният код, който използвам за четене на файла. Имам манипулатора от предишно прекъсване.
xor ax,ax
lea dx, buffer
mov ah,3fh
mov bx,handle
mov cx,4096
int 21h
Благодаря!
РЕДАКТИРАНЕ
Открих проблема, но нямам идея как да го реша. Оказва се, че символът, разчетен като 225, не е é, а á. Кодът за á трябва да е 160 според всяка ASCII таблица, която намерих... но е 225 в Unicode... Което е странно, тъй като изрично казвам на Notepad да го запази като ANSI, а не ASCII...