Максимальное значение числа N, при котором N! не переполняет одно слово - Assembler

Узнай цену своей работы

Формулировка задачи:

Написать программу на ассемблере IA-16, вычисляющую максимальное значение числа N, при котором N! не переполняет одно слово
.modelsmall
.386
.stack 100h
.data
   N DW 1
 
.code
START: mov ax, @data
mov ds, ax
xor ax, ax
 
mov ax, N
mov bx, N
xor dx, dx
 
fact:  cmp dx, 0
jne FINISH
inc bx
mul bx
jmp fact
 
FINISH:xor ax, ax
dec bx
mov N, bx
mov dx, bx
add dl, 30h
mov ah, 2
int 21h
 
       MOV AX, 4C00h
       INT 21h
END START
mov N, bx mov dx, bx add dl, 30h mov ah, 2 int 21h объясните пожалуйста эти строки, почему к dl прибавляют 30h(0). mov ah, 2 int 21h И какой регистр именно он будет выводить

Решение задачи: «Максимальное значение числа N, при котором N! не переполняет одно слово»

textual
Листинг программы
C:\>DEBUG
-A
0B25:0100   DW 1
0B25:0102   MOV AX,[100]
0B25:0105   MOV BX,[100]
0B25:0109   XOR DX,DX
0B25:010B   CMP DX,0
0B25:010E   JNE 115
0B25:0110   INC BX
0B25:0111   MUL BX
0B25:0113   JMP 10B
0B25:0115   XOR AX,AX
0B25:0117   DEC BX
0B25:0118   MOV [100],BX
0B25:011C   MOV DX,BX
0B25:011E   ADD DL,30
0B25:0121   RET
0B25:0122

-T
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B25  ES=0B25  SS=0B25  CS=0B25  IP=0102   NV UP EI PL NZ NA PO NC
0B25:0102 A10001        MOV     AX,[0100]                          DS:0100=0001
-T
...

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы