汇编语言:计算一个数的立方值(0~40)

CODE segment
ASSUME DS:CODE,DS:CODE
ORG 100H
START:
		PUSH CS
		POP DS
Again:
        LEA DX,Tips1
		MOV AH,9
		INT 21H ;显示提示
		XOR BP,BP ;BP清0
		MOV CS,2
		@In:mov ah,0
		INT 16H ;无回显输入
		CMP AL,1BH ;Esc退出程序
		JZ quit
		CMP AL,ODH
		JZ Show ;回车结束输入
		CMP AL,'0'
		JB @In
		CMP AL,'9';数据校验
		JA 
		MOV AH,0EH
		INT 10H ;显示有效输入
		AND AL,0FH
		MOV AH,0
		XCHG AX,BP
		MOV BL,10 ;BP×10
		MUL BL
		ADD BP,AX ;BP+AX
		LOOP @In
Show:
		CMP BP,40
		JBE Q4
		LEA DX,CuoWu
		MOV AH,9
		INT 21H
		JMP quit
Q4:
		XOR DX,DX
		MOV AX,BP
		MUL BP
		MUL BP
		MOV DX,AX
		MOV CUBE,AX
		PUSH AX
		MOV AL,'='
		MOV AH,0EH
		INT 10H
		POP AX
		call binidec
		JUP START
quit:
		MOV AH,0
		INT 16H
		MOV AH,4CH
		int 21H
		Tips1 DB 0DH,0AH,'Input(0-40),Esc to Quit: $'
		CuoWu db 'Input Error!$'
		CUBE dw 0
		binidec:
		mov cx,10000d
		call dec_div
		mov cx,1000d
		call dec_div
		mov cx,100d
		call dec_div
		mov cx,10d
		call dec_div
		mov cx,1d
		call dec_div
		ret
dec_div:
    mov ax,dx
    mov dx,0
    div cx
    mov bx,dx
    add al,30h
    mov ah,0eh
		int 10h
		ret
code ends
end start

posted @ 2022-04-06 15:27  uniqueboy  阅读(66)  评论(0)    收藏  举报  来源