用汇编语言求 N的阶乘,N是1到9.

如题所述

汇编语言的基本思路和c语言大致相同,只是写程序更麻烦一些。
这道题的答案如下:
DATE SEGMENT
N DB 01H
M DB 00H
DATA ENDS (定义了一个叫DATA的数据段,N,M是其中的两个字节数据)
CODE SEGMENT
ASSUME CS:CODE,DS:DATA (设置代码段,并让你自定义的DATA和CODE段和
系统对应起来)
START:MOV AX,DATA
MOV DS,AX (将数据段的段地址送于AX,再由AX送到DS,即DS存储数据段的值
注意,CODE段不能赋值,因为系统本身为它设定了一个初值)
MOV AL,N
MOV CX,8 (设定循环次数初值)
L0: INC N (使N自增1)
MUL N (将AL中的数与N相乘,结果保存在AL中)
MOV M, AL (将AL中的数保存到M中)
LOOP: L0 (返回执行上述程序)
MOV AH,4CH (程序结束时返回操作系统)
INT 21H (调用DOS中断,程序结束)
CODE ENDS (代码段结束)
END START
若已知循环次数的情况下,可采用LOOP指令来进行循环操作!
温馨提示:内容为网友见解,仅供参考

用汇编语言求 N的阶乘,N是1到9.
L0: INC N (使N自增1)MUL N (将AL中的数与N相乘,结果保存在AL中)MOV M, AL (将AL中的数保存到M中)LOOP: L0 (返回执行上述程序)MOV AH,4CH (程序结束时返回操作系统)INT 21H (调用DOS中断,程序结束)CODE ENDS ...

C语言编程 输入N 求N的阶乘
int main(int argc, char const *argv[]) \/\/主函数 { int n; \/\/变量定义 scanf("%d", &n); \/\/输入一个整数 printf("%d\\n", factorial(n)); \/\/调用函数计算阶乘 return 0;}int factorial(int n) \/\/定义计算n!的函数 { int fact = 1;for (int i = 1; i <=...

编程求10阶乘(汇编语言)
dec ecx ; 计数器减1 cmp ecx, 0 ; 如果计数器为0,则跳出循环 jne loop done:; 结束程序 mov eax, 1 ; 系统调用号1代表退出 xor ebx, ebx ; 返回值为0 int 0x80 ; 执行系统调用 以上程序将10的阶乘计算在result变量中。由于10的阶乘为一个很大的数,需要使用一个64位变量...

20分求几个数的阶乘(比较急)
如果不想出来1.……e+XX这样的数,不用科学计数法表示的数的话 你可以按字符输入,让后用汇编里数字的乘法来计算,最后再按字符输出全部数 做大数的求余就是这么着坐的 不过做乘法更麻烦点 要考虑到进位和辅助进位 可以参考一下汇编语言

用汇编编写5的阶乘的程序
SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 MOV CX,NUM MOV AX,1 ;被乘数 MOV SI,1 ;乘数 L1:MUL SI ;(dx,ax)保存n!,n表示第n次循环 INC SI LOOP L1 MOV SUM,AX MOV AH,4CH INT 21H CODES ENDS END START ...

汇编语言从键盘输入一个数字(即个位数),以十进制形式输出该数的...
MOV AH,9 INT 21H LEA DX,NUMBER MOV AH,0AH BR \/> INT 21H LEA DX,输出 MOV AH,9 INT 21H 数+2 子BL,30H MOV BL,CMP NUMBER + 1,1 JZ jp0 MOV AL,10 MUL BL 添加人,数+3 子人,30H MOV BL, AL 器JP 0:MOV AH,2 到mov cx,8 JP1:SHL BL,1 MOV DL,...

有汇编大神吗?帮忙写一下100的阶乘的程序
; 8086汇编语言; 100!=; 933262154439441526816992388562667004907159682643816214685929; 638952175999932299156089414639761565182862536979208272237582; 51185210916864000000000000000000000000 ; 阶乘100!的结果是158位十进制数;数据段 data segment N EQU 100 ;阶乘 N! MAX EQU 256 ;允许阶乘结果的最大位数(...

c语言 由键盘输入一个正整数n,求n有多少个不同的正整数因子 描述 由...
printf("此数共有%lu个不同正整数因子。\\n",cnt); return 0;} 本回答由提问者推荐 举报| 答案纠错 | 评论 1 0 上帝来自地球 采纳率:66% 擅长: C\/C++ 汇编语言 其他编程语言 百度知道 物理学 其他回答 #include<stdio.h>int main(){ int n; int count=0; scanf("%d",&n); for(int i=1...

用汇编语言程序设计实现10的阶乘 注:汇编 非C 谢谢
data segment org 2000h data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov dx,0 mov ax,1 mov bx,2 mov cx,9 s1:mul bx inc bx loop s1 mov ax,4c00h int 21h code ends end start 已验证。。。

用汇编语言设计程序实现10!(10的阶乘)
.386 .model flat,stdcall option casemap:none include windows.inc include kernel32.inc includelib kernel32.lib .data dwNum dd ?.code start:mov eax,10 mov ebx,9 .repeat mul ebx sub ebx,1 .until ebx ==1 mov dwNum,eax invoke ExitProcess,0 end start ...

相似回答