c 阶乘的代码汇编语言,【微机原理 实验】 计算N!的实验(N的阶乘)(含汇编代码)...

实验十  计算N!的实验

更多微机实验:https://blog.csdn.net/yxp189/column/info/39992

汇编语言-微机原理与接口技术-实验

注意:未经允许,请勿转载!

转载请标明出处~

适用课程:微机原理与接口技术(实验)

选用教材:微型计算机原理与接口技术-中国科学技术大学出版社

一、实验要求和目的

了解数学函数是怎样在汇编语言上实现的

掌握汇编程序的分支及循环程序的设计方法

二、实验内容

编写计算N!的程序,数值N由键盘输入,结果在屏幕上输出。

实验代码

;Author:YXP

;CSDN:yxp189

;Email:yxp189@protonmail.com

;如有问题,欢迎和我联系~

;转载请标明出处~

NUM DB 50 DUP(0)

N DB 0

S1 DB 0DH,0AH,'PLEASE ENTER THE NUMBER:','$'

S2 DB 0AH,'N!=','$'

BUFF DB 50,0,50 DUP('$')

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START:

MOV AX,DATAS

MOV DS,AX

MOV DX,OFFSET S1

MOV AH,09H

INT 21H

CALL INPUT ;输入后转换成数字

MOV N,AL ;N!

MOV DX,OFFSET S2

MOV AH,09H

INT 21H

LEA SI,NUM

MOV AX,1

MOV [SI],AX

XOR AX,AX

XOR BX,BX

XOR DX,DX

NEXT:

MOV CX,40

LEA SI,NUM

G:

MOV AL,[SI] ;循环做N次乘法

MOV BL,N

MUL BL

ADD AL,DL

MOV BL,0AH

DIV BL

MOV [SI],AH

MOV DL,AL

INC SI

LOOP G

DEC N

CMP N,1

JA NEXT

MOV SI,40

K: MOV AL,NUM[SI]

CMP AL,0

JA E

DEC SI

JMP K

E: MOV DL,NUM[SI]

ADD DL,30H

MOV AH,02H

INT 21H

DEC SI

CMP SI,-1

JG E

MOV AH,4CH

INT 21H

INPUT PROC NEAR

MOV DX,OFFSET BUFF

MOV AH,0AH

INT 21H

MOV SI,OFFSET BUFF+2

MOV CL,BUFF+1

XOR DX,DX

XOR AX,AX

L1: MOV BL,0AH

MUL BL

MOV DL,[SI]

SUB DL,30H

ADD AL,DL

INC SI

LOOP L1

RET

INPUT ENDP

CODES ENDS

END START

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值