5.5.13. Фн 38h - Национальная информация

 

      Вход: AH = 38h

            DX = 0FFFFh - задать новый код страны из AL (или BX),

            иначе

            DS:DX = адрес буфера для блока национальной информации

            AL =0      - получить информацию о текущей стране

                1-0FEh - получить информацию о стране с кодом<255

                0FFh   - получить  информацию  о  стране  с кодом

                         BX>=255

            BX = 16-битовый код страны (только при AL=0FFh)

 

      Выход: AH = код ошибки, если бит CF установлен

             BX = код страны (если на входе AL=0)


 

      Описание: Если DX=0FFFFh, то  текущий код страны изменяется

 на AL  (или на BX, если  AL=0FFh). Обычно код страны  задается в

 файле CONFIG.SYS.

 

      Если же DX<0FFFFh, то по  адресу DS:DX заносятся 20h байтов

 информации о заданном национальном коде.

 

      Примечания:

 

      1.  ДОС  2.x  позволяет  Вам  только  получить информацию о

 текущей стране, поэтому параметры функции задаются проще:

 

      AL = 0

      DS:DX = адрес  буфера-приемника  длиной  20h байтов, куда

              заносится национальная информация (см. прим.4).

 

      2. Коды стран и связанная с ними информация приведены ниже:

 

   Код    Страна    Драйвер     Дата    Время      Денежная    PD

                   клавиатуры                       сумма

 ────────────────────────────────────────────────────────────────

 001h=001 США          ───    ММ-ДД-ГГ  01:00:00PM $1,000.00    ,

 002h=002 Фр.Канада    ───    ГГ-ММ-ДД  13:00:00    1 000,00$   ;

 01Fh=031 Нидерланды   ───    ДД-ММ-ГГ  13:00:00    1.000,00    ;

 020h=032 Бельгия      ───    ДД/ММ/ГГ  13:00:00    1 000,00BEF ;

 021h=033 Франция    keybfr   ДД/ММ/ГГ  13:00:00    1 000,00F   ;

 022h=034 Испания    keybsp   ДД/ММ/ГГ  13:00:00    1.000,00Pt  ;

 027h=039 Италия     keybit   ДД/ММ/ГГ  13:00:00   L1.000,00    ;

 029h=041 Швейцария    ───    ДД.ММ.ГГ  13.00.00  Fr1,000.00    ,

 02Ch=044 Велико-    keybuk   ДД-ММ-ГГ  13:00:00   L1,000.00    ,

          британия

 02Dh=045 Дания        ───    ДД/ММ/ГГ  13.00:00  kr1.000,00    ;

 02Eh=046 Швеция       ───    ГГ-ММ-ДД  13.00.00 SEK1.000,00    ;

 02Fh=047 Норвегия     ───    ДД/ММ/ГГ  13.00.00  Kr1.000,00    ;

 031h=049 Германия   keybgr   ДД.ММ.ГГ  13.00.00  DM1.000,00    ;

 03Dh=061 Австралия    ───    ДД-ММ-ГГ  13:00:00   $1,000.00    ,

 15Fh=351 Португалия   ───    ДД/ММ/ГГ  13:00:00    1.000$00    ;

 166h=358 Финляндия    ───    ДД-ММ-ГГ  13:00:00    1 000,00Mk  ;

 311h=785 Бл.Восток    ───    ДД/ММ/ГГ 01:00:00PM   1.000,000   ;

 3CCh=972 Израиль      ───    ДД/ММ/ГГ  13:00:00   O1,000.00    ,

 ────────────────────────────────────────────────────────────────

 Здесь PD - разделитель данных в списках.


 

      3. Формат блока национальной  информации различен в ДОС 2.x

 и ДОС 3.x. В ДОС 3.x он имеет вид:

 

 Смещение Длина Содержимое        Комментарий

 ───────────────┬───────┬────────────────────────────────────────

   +0       2   │ Дата  │ Форматы:0=США(М-Д-Г),1=Европа(Д-М-Г),

                ├───┬───┼───────┐ 2=Япония(Г-М-Д)

   +2       5   │'L'│ 0 │       │ ASCIIZ-строка=символ денежной

                ├───┼───┼───────┘               единицы

   +7       2   │','│ 0 │         Разделитель тысяч

                ├───┼───┤

   +9       2   │'.'│ 0 │         Разделитель дробной части

                ├───┼───┤

   +Bh      2   │'-'│ 0 │         Разделитель даты

                ├───┼───┤

   +0Dh     2   │':'│ 0 │         Разделитель времени

                ├───┼───┘

   +0Fh     1   │ 0 │ Денежные суммы: 0="$123.00", 1="123.00$",

                ├───┤ 2="$ 123.00", 3="123.00 $", 4="123$00"

   +10h     1   │ 1 │ Длина дробной части в денежных суммах

                ├───┤

   +11h     1   │ 2 │ Формат времени:0=12-часовой,1=24-часовой

                ├───┴───────┐

   +12h     4   │ CaseMap   │ Длинный адрес CaseMap

                ├───┬───┬───┘

   +16h     2   │','│ 0 │ Разделитель данных в списках

                ├───┴───┴───────┐

   +18h     8       резерв    

                └───────────────┘

   +20h     Длина блока

 

      - формат денежной суммы 4 появился в ДОС 3.2;

      -  подпрограмма CaseMap  отображает символы  с кодами более

 80h  в   буквы.  Например,  команда   SORT  использует  ее   для

 отображения символов "a с  диакритическими знаками" в символ 'а'

 перед сортировкой. Для использования ее

 

      - поместите символ в AL;

      - вызовите CaseMap командой CALL FAR;

      - результат будет в AL (прочие регистры не изменяются).

 

      4. Блок национальной информации для ДОС 2.x имеет вид

 

 Смещение Длина Содержимое        Комментарий

 ───────────────┬───────┬────────────────────────────────────────

   +0       2   │ Дата  │ Формат даты (см. прим.3)

                ├───┬───┤

   +2       ?   │'Z'│ 0 │ ASCIIZ-строка = символ денежной единицы

                ├───┼───┤

   +?       ?   │','│ 0 │ ASCIIZ-строка = разделитель тысяч

                ├───┼───┤

   +?       ?   │'.'│ 0 │ ASCIIZ-строка = разделитель дробной

                ├───┴───┴───────┐части

   +?       ?       резерв    

                └───────────────┘

 

 

   20h      длина блока

 

      См. также: Фн 65h

                 Фн 66h

 

Вы находитесь в разделе: 
Также вам будет интересно:
Метки: 

Добавить коментарий