Почему значение выводится дважды? - Assembler
Формулировка задачи:
Нужно вывести число в десятичной системе счисления. Часть кода нашёл здесь: Ввод и вывод чисел в различных системах счисления
Не могу понять почему результат выводится дважды.
sseg segment stack db 64 dup (?) sseg ends ; dseg segment str db "p","r","o","c" dseg ends ; cseg segment assume cs:cseg, ds:dseg, ss:sseg ; start proc far push ds push ax mov bx, dseg mov ds, bx call main ret start endp ; main proc near lea bx,str mov ax, -100 call Show_AX Show_AX proc push ax push bx push cx push dx push di mov cx, 10 ; cx - основание системы счисления xor di, di ; di - кол. цифр в числе ; если число в ax отрицательное, то ;1) напечатать '-' ;2) сделать ax положительным or ax, ax jns @@Conv push ax mov dx, '-' mov ah, 2 ; ah - функция вывода символа на экран int 21h pop ax neg ax @@Conv: xor dx, dx div cx ; dl = num mod 10 add dl, '0' ; перевод в символьный формат inc di push dx ; складываем в стэк or ax, ax jnz @@Conv ; выводим из стэка на экран @@Show: pop dx ; dl = очередной символ mov ah, 2 ; ah - функция вывода символа на экран int 21h dec di ; повторяем пока di<>0 jnz @@Show pop di pop dx pop cx pop bx pop ax ret Show_AX endp main endp cseg ends end start
Решение задачи: «Почему значение выводится дважды?»
textual
Листинг программы
mov ax,4c00h int 21h
Объяснение кода листинга программы
mov ax,4c00h
- в данной строке кода происходит перенос значения 4c00h в регистр AX. Значение 4c00h представляет собой десятичное число, которое может быть интерпретировано как шестнадцатеричное число 4c00h. Это значение может быть использовано в качестве кода операции или как другой тип данных.int 21h
- в данной строке кода выполняется интеркаляция, которая является формой взаимодействия между процессором и оперативной памятью. Операцияint 21h
может быть использована для вызова функции BIOS, такой как функция вывода на экран. Почему значение выводится дважды? Возможно, это связано с особенностями работы конкретной функции вывода на экран, которая выводит значение не только один раз, но дважды. Однако, без дополнительной информации сложно дать точный ответ на этот вопрос.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д