Вывод целого знакового, либо беззнакового числа
Категория: Assembler
2012-02-12 14:47:19
Число для вывода должно находиться в ax. Изменяя число - основание сс можно выводить числа в двоичной, троичной и т.п. системах счисления
code: #assembler
OutInt proc ;; если число знаковое, то необходимо расскоментировать следующие строки ;; Проверяем число на знак. ; test ax, ax ; jns oi1 ; ;; Если оно отрицательное, выведем минус и оставим его модуль. ; mov cx, ax ; mov ah, 02h ; mov dl, '-' ; int 21h ; mov ax, cx ; neg ax ;; Количество цифр будем держать в CX. ;oi1: xor cx, cx mov bx, 10 ; основание сс. 10 для десятеричной и т.п. oi2: xor dx,dx div bx ; Делим число на основание сс. В остатке получается последняя цифра. ; Сразу выводить её нельзя, поэтому сохраним её в стэке. push dx inc cx ; А с частным повторяем то же самое, отделяя от него очередную ; цифру справа, пока не останется ноль, что значит, что дальше ; слева только нули. test ax, ax jnz oi2 ; Теперь приступим к выводу. mov ah, 02h oi3: pop dx ; Извлекаем очередную цифру, переводим её в символ и выводим. ;; раскоментировать если основание сс > 10, т.е. для вывода требуются буквы ; cmp dl,9 ; jbe oi4 ; add dl,7 ;oi4: add dl, '0' int 21h ; Повторим ровно столько раз, сколько цифр насчитали. loop oi3 ret OutInt endp
автор: Goodwin98
Поделиться: