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


          

Ассемблер для IBM PC. Программы.


MOV DX,WORD2 ;Двойное слово / слово MOV AX,WORD3 ; делимое в DX:AX DIV WORD1 ; остаток:частное в DX:AX MOV AX,WORD1 ;Слово / слово SUB DX,DX ; расширить делимое в DX DIV WORD3 ; остаток:частное в DX:AX RET D10DIV ENDP ; Примеры с командой IDIV: ; --------------------------------------------- E10IDIV PROC MOV AX,WORD1 ;Слово / байт IDIV BYTE1 ; остаток:частное в AH:AL MOV AL,BYTE1 ;Байт / байт CBW ; расширить делимое в AH IDIV BYTE3 ; остаток:частное в AH:AL
MOV DX,WORD2 ;Двойное слово / слово MOV AX,WORD3 ; делимое в DX:AX IDIV WORD1 ; остаток:частное в DX:AX MOV AX,WORD1 ;Слово / слово CWD ; расширить делимое в DX IDIV WORD3 ; остаток:частное в DX:AX RET E10DIV ENDP
CODESG ENDS
Ассемблер для IBM PC. Программы. 87
END BEGIN
TITLE ASCADD (COM) Сложение чисел в ASCII-формате CODESG SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,SS:CODESG ORG 100H BEGIN: JMP SHORT MAIN ; ----------------------------------------------- ASC1 DB '578' ;Элементы данных ASC2 DB '694' ASC3 DB '0000' ; ----------------------------------------------- MAIN PROC NEAR CLC LEA SI,AASC1+2 ;Адреса ASCII-чисел LEA DI,AASC2+2 LEA BX,AASC1+3 MOV CX,03 ;Выполнить 3 цикла A20: MOV AH,00 ;Очистить регистр AH MOV AL,[SI] ;Загрузить ASCII-байт ADC AL,[DI] ;Сложение (с переносом) AAA ;Коррекция для ASCII MOV [BX],AL ;Сохранение суммы DEC SI DEC DI DEC BX LOOP A20 ;Циклиться 3 раза MOV [BX],AH ;Сохранить перенос RET MAIN ENDP CODESG ENDS END BEGIN
Ассемблер для IBM PC. Программы. 88
TITLE ASCMUL (COM) Умножение ASCII-чисел CODESG SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,SS:CODESG ORG 100H BEGIN: JMP MAIN ; --------------------------------------------- MULTCND DB '3783' ;Элементы данных MULTPLR DB '5' PRODUCT DB 5 DUP(0) ; --------------------------------------------- MAIN PROC NEAR MOV CX,04 ;4 цикла LEA SI,MULTCND+3 LEA DI,PRODUCT+4 AND MULTPLR,0FH ;Удалить ASCII-тройку A20: MOV AL,[SI] ;Загрузить ASCII-символ ; (можно LODSB) AND AL,OFH ;Удалить ASCII-тройку MUL MULTPLR ;Умножить AAM ;Коррекция для ASCII ADD AL,[DI] ;Сложить с AAA ; записанным MOV [DI],AL ; произведением DEC DI MOV [DI],AH ;Записать перенос DEC SI LOOP A20 ;Циклиться 4 раза RET MAIN ENDP CODESG ENDS END BEGIN

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