编写计算 N !的程序,数值 N 由键盘键入,结果在屏幕上显示。N 的范围为 0---65535。要求使用汇编语言8086
时间: 2024-01-24 13:17:17 浏览: 69
计算机英语词汇.pdf
以下是使用汇编语言8086计算N!的程序:
```
DATA SEGMENT
NUM DW 1 ; 存储 N 的值
FACT DW 1 ; 存储 N! 的值
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA ; 初始化数据段寄存器
MOV DS, AX
MOV AH, 01H ; 获取 N 的值
INT 21H
SUB AL, 30H ; 将 ASCII 码转换为数字
MOV BL, AL
CALL FACTORIAL ; 计算 N! 的值
MOV AH, 02H ; 将结果输出到屏幕
MOV DL, FACT
ADD DL, 30H ; 将数字转换为 ASCII 码
INT 21H
MOV AH, 4CH ; 程序结束
INT 21H
FACTORIAL PROC
MOV AX, 1 ; 初始化 AX 为 1
MOV CX, NUM ; 将 N 的值保存在 CX 中
LOOP_START:
MUL CX ; AX = AX * CX
DEC CX ; CX = CX - 1
JNZ LOOP_START ; 如果 CX 不等于 0,继续循环
MOV FACT, AX ; 将 AX 中的值保存到 FACT 中
RET
FACTORIAL ENDP
CODE ENDS
END START
```
解释:
该程序使用了一个变量 `NUM` 来存储输入的值 N,使用了另一个变量 `FACT` 来存储计算出的 N! 的值。
程序通过调用 `FACTORIAL` 过程来计算 N! 的值。该过程使用了寄存器 AX 和 CX,其中 AX 用来保存 N! 的值,CX 用来保存 N 的值。
在 `LOOP_START` 标签处,程序使用 `MUL` 指令将 AX 的值乘以 CX 的值,然后使用 `DEC` 指令将 CX 的值减 1。程序然后使用 `JNZ` 指令来测试 CX 是否为 0,如果不是,则跳转回 `LOOP_START` 标签处继续循环,直到 CX 等于 0。
最后,程序将计算出的 N! 的值输出到屏幕上。
阅读全文