⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 factorial.asm

📁 介绍用Java解析网络数据的三种特殊方法
💻 ASM
字号:
; This sample gets the number
; from the user, and calculates
; factorial for it.
; Supported input from 0 to 8
; inclusive!

#make_COM#

include 'emu8086.inc'

ORG     100h

start:

; get first number:

CALL    PTHIS
DB 13, 10, 'Enter the number: ', 0

CALL    scan_num


; factorial of 0 = 1:
MOV     AX, 1
CMP     CX, 0
JE      print_result

; move the number to BX:
; CX will be a counter:

MOV     BX, CX

MOV     AX, 1
MOV     BX, 1

calc:
MUL     BX
CMP     DX, 0
JNE     overflow
INC     BX
LOOP    calc

print_result:

; print result in AX:
CALL    PTHIS
DB 13, 10, 'Factorial: ', 0

CALL    PRINT_NUM_UNS
JMP     exit


overflow:
CALL    PTHIS
DB 13, 10, 'The result is too big!', 13, 10, 'Use values from 0 to 8.', 0
JMP     start

exit:

RET

;=================================
; here we define the functions
; from emu8086.inc

; SCAN_NUM reads a
; number from the user and stores
; it in CX register.

DEFINE_SCAN_NUM

; PRINT_NUM prints a signed
; number in AX.
; PRINT_NUM_UNS prints an unsigned
; number in AX (required by 
; PRINT_NUM):

DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS

; PTHIS prints NULL terminated
; string defined just after
; the CALL PTHIS instruction:
DEFINE_PTHIS

;=================================
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -