Ассемблер и программирование для IBM PC


          

Вывод на экран сообщения об


R10ERR PROC ; < Вывод на экран сообщения об ошибке>
RET R10ERR ENDP
CODESG ENDS END BEGIN
Ассемблер для IBM PC. Программы. 100
page 60,132 TITLE XLATE (COM) Перевод кода ASCII в код EBCDIC CODESG SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,ES:CODESG ORG 100H BEGIN: JMP MAIN ; ---------------------------------------------------- ASCNO DB '-31.5' EBCNO DB 6 DUP(' ') XLTAB DB 45 DUP(40H) DB 60H, 2DH DB 5CH DB 0F0H,0F1H,0F2H,0F3H,0F4H DB 0F5H,0F6H,0F7H,0F8H,0F9H DB 199 DUP(40H) ; ---------------------------------------------------- MAIN PROC NEAR ;Основная процедура LEA SI,ASCNO ;Адрес символов ASCNO LEA DI,EBCNO ;Адрес поля EBCNO MOV CX,06 ;Длина LEA BX,XLTAB ;Адрес таблицы A20: MOV AL,[SI] ;Получить ASCII символ XLAT ;Перекодировка MOV [DI],AL ;Записать в поле EBCNO INC DI INC SI LOOP A20 ;Повторить 6 раз RET MAIN ENDP CODESG ENDS END BEGIN
Ассемблер для IBM PC. Программы. 101
page 60,132 TITLE ASCHEX (COM) Преобразование ASCII в шест. CODESG SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,ES:CODESG ORG 100H BEGIN: JMP MAIN ; ----------------------------------------------- DISPROW DB 16 DUP(' '), 13 HEXSTR DB 00 XLATAB DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H ; ----------------------------------------------- MAIN PROC NEAR ;Основная процедура CALL Q10CLR ;Очистить экран LEA SI,DISPROW A20LOOP: CALL C10HEX ;Перекодировать CALL D10DISP ; и вывести на экран CMP HEXCTR,0FFH ;Последнее значение (FF)? JE A50 ; да - завершить INC HEXCTR ; нет - перейти к следующему JMP A20LOOP A50: RET MAIN ENDP
C10HEX PROC NEAR ;Перекодировка в шест. MOV AH,00 MOV AL,HEXCTR ;Получить шест.пару SHR AX,CL ;Сдвиг правой шест.цифры LEA BX,XLATAB ;Установить адрес таблицы MOV CL,04 ;Установить величину сдвига XLAT ;Перекодировка в шест. MOV [SI],AL ;Записать левый символ
MOV AL,HEXCTR SHL AX,CL ;Сдвиг левой цифры XLAT MOV [SI]+1,AL ;Перекодировка в шест. RET ;Записать правый символ C10HEX ENDP
D10DISP PROC NEAR ;Вывод на экран MOV AL,HEXCTR MOV [SI]+3,AL CMP AL,1AH ;Символ EOF? JE D20 ; да - обойти CMP AL,07H ;Меньше/равно 08? JB D30 ; да - OK CMP AL,10H ;Больше/равно 0F? JAE D30 ; да - OK D20: MOV BYTE PTR [SI]+3,20H

Содержание  Назад  Вперед