汇编语言编写计算 N !的程序,数值 N 由键盘键入,结果在屏幕上显示。N 的范围为 0---65535。即刚好能被一个 16 位寄存器容纳。
时间: 2024-01-24 19:17:16 浏览: 62
以下是使用汇编语言编写计算 N! 的程序:
```
.MODEL SMALL
.STACK 100H
.DATA
n DW ?
msg1 DB 'Enter a number between 0 and 65535: $'
msg2 DB 'The factorial of ', 13, 10, '$'
result DW ?
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
; Display message to enter a number
MOV AH, 09H
LEA DX, msg1
INT 21H
; Read input from keyboard
MOV AH, 01H
INT 21H
SUB AL, '0' ; Convert ASCII to decimal
MOV n, AX
; Check if n is 0 or 1
CMP n, 0
JE zero
CMP n, 1
JE one
; Calculate n!
MOV CX, n
DEC CX
MOV result, CX
loop:
MUL CX
LOOP loop
; Display result
MOV AX, result
MOV CX, 10
XOR DX, DX
DIV CX
PUSH DX
CMP AX, 0
JZ print
JMP loop
print:
; Display message
MOV AH, 09H
LEA DX, msg2
INT 21H
; Display result
pop DX
ADD DL, '0'
MOV AH, 02H
INT 21H
; Exit program
MOV AH, 4CH
INT 21H
zero:
; Display message
MOV AH, 09H
LEA DX, msg2
INT 21H
; Display result
MOV DL, '1'
MOV AH, 02H
INT 21H
; Exit program
MOV AH, 4CH
INT 21H
one:
; Display message
MOV AH, 09H
LEA DX, msg2
INT 21H
; Display result
MOV DL, n
ADD DL, '0'
MOV AH, 02H
INT 21H
; Exit program
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
```
程序首先从键盘读取一个数值 N,并将其存储在变量 n 中。然后,程序检查 N 是否为零或一。如果是,则直接计算结果并将其显示在屏幕上。如果不是,则使用循环计算 N! 的值,并将结果存储在变量 result 中。最后,程序将结果显示在屏幕上并退出。
阅读全文