на Ассемблере
mov dx,1 ;
;mov ah,1h
;int 21h
mov al,4
cbw ;
mov cx,ax
mov ax,1 ;результат
metka:
mov bx,dx ;
imul dx ;
mov dx,bx
inc dx ; +1
loop metka
;mov dl,ax
;add dl,30h
;mov ah,2h
;int 21h
mov ah,1h
int 21h
mov ah,4ch
int 21h
CodeSg ENDS
END start
Другие языки программирования и технологии
Народ помогите пожалуйста, нашел код но не знаю как он работает! если можно на каждом строке напишите коммы заранее спс
Это фрагмент программы, вычисляющей факториал 4.
Закомментированные строки удалены, так как не обрабатываются компилятором.
model small
CodeSG segment
assume cs:CodeSg
start:
mov dx,1 ; Загрузка в регистр dx единицы, число, с которого начинается перемножение
mov al,4 ; В al число, факториал которого нужно посчитать
cbw ; Расширение al -> ax для формирования начального значения счётчика
mov cx,ax ; Начальное значение счётчика циклов скопировать в cx
mov ax,1 ; Начальное значение произведения чисел
metka: ; Начало цикла
mov bx,dx ; Текущее число, на которое будет производиться умножение скопировать в bx (буфер для временного хранения)
imul dx ; Умножить текущее значение факториала на текущее число
mov dx,bx ; Восстановить текущее число из буферного регистра
inc dx ; Инкремент. Переход к следующему числу
loop metka ; Конец цикла. cx:=cx-1 и переход на metka, если cx не равно 0
mov ah,1h ; Вызов функции ввода кода нажатой клавиши для
int 21h ; ожидания действий пользователя
mov ah,4ch ; Вызов функции завершения работы для
int 21h ; возврата управления операционной системе
CodeSg ENDS
END start
Закомментированные строки удалены, так как не обрабатываются компилятором.
model small
CodeSG segment
assume cs:CodeSg
start:
mov dx,1 ; Загрузка в регистр dx единицы, число, с которого начинается перемножение
mov al,4 ; В al число, факториал которого нужно посчитать
cbw ; Расширение al -> ax для формирования начального значения счётчика
mov cx,ax ; Начальное значение счётчика циклов скопировать в cx
mov ax,1 ; Начальное значение произведения чисел
metka: ; Начало цикла
mov bx,dx ; Текущее число, на которое будет производиться умножение скопировать в bx (буфер для временного хранения)
imul dx ; Умножить текущее значение факториала на текущее число
mov dx,bx ; Восстановить текущее число из буферного регистра
inc dx ; Инкремент. Переход к следующему числу
loop metka ; Конец цикла. cx:=cx-1 и переход на metka, если cx не равно 0
mov ah,1h ; Вызов функции ввода кода нажатой клавиши для
int 21h ; ожидания действий пользователя
mov ah,4ch ; Вызов функции завершения работы для
int 21h ; возврата управления операционной системе
CodeSg ENDS
END start
Похожие вопросы
- люди, помогите пожалуйста найти код от вируса
- Здравствуйте всем! Помогите пожалуйста найти ошибку в моем коде
- Помогите пожалуйста описать код, что означает каждая команда?
- народ помогите пожалуйста) надо сделать прогу на pascal)
- помогите пожалуйста проверить код на языке си, программа работает неверно - не выдает сумму массива Z
- Помогите, пожалуйста, найти ошибки в коде. Нужно выбрать из массива минимальное значение и вывести индексы его позиции.
- ПОМОГИТЕ ПОЖАЛУЙСТА ИСПРАВИТЬ КОД, НЕ МОГУ ПОНЯТЬ В ЧЁМ ПРИЧИНА, ПОЧЕМУ НЕ ПРАВИЛЬНО РАБОТАЕТ? ЯЗЫК СИ.
- Помогите пожалуйста найти ошибку, с++
- Помогите пожалуйста найти ошибку в задаче (Язык программирования Си)
- Помогите, пожалуйста, с кодом по С++. Пожалуйста, а то щас помру на сессии.