📄 求平方.txt
字号:
data segment
string db 'Input a number $'
errstr db 0dh,0ah,'Error! Please input two digit!',0dh,0ah,'$'
resstr db 0dh,0ah,'The square is $'
data ends
;********************************************************
code segment ;代码段
assume cs:code,ds:data
start:
main proc far
push ds ;数据段寄存器初始化
sub ax, ax
push ax
mov ax, data
mov ds, ax
mov dx,offset string
mov ah, 09h ;显示Input a number
int 21h
mov ah, 01h ;输入高位
int 21h
sub al, 30h
cmp al, 0
jl error
cmp al, 9
jg error
mov cl, 10d ;高位乘10
mul cl
mov bl, al
mov ah, 01h ;输入低位
int 21h
sub al, 30h
cmp al, 0
jl error
cmp al, 9
jg error
add al, bl ;转化为十六进制数
mul al ;求平方
mov bx, ax
call hex_dec ;十进制显示
jmp exit
error: mov dx,offset errstr ;输入非0—9的字符,显示Error
mov ah, 09h
int 21h
exit: ret
main endp
;---------------------------------------------------------------------
hex_dec proc near ;将BX中的十六进制数以十进制显示
mov dx, offset resstr
mov ah, 09h
int 21h
mov si, 0 ;SI用于做标记,以避免显示高位的零
mov cx, 1000d
call dec_div ;千位
mov cx, 100d
call dec_div ;百位
mov cx, 10d
call dec_div ;十位
mov cx, 1d
call dec_div ;个位
cmp si, 0 ;输入的数为零,防止无显示
jne exit2
mov dl, 30h
mov ah, 2
int 21h
exit2: ret
hex_dec endp
;--------------------------------------------------------------------
dec_div proc near
mov ax, bx
mov dx, 0
div cx ;dx,ax div cx
mov bx, dx ;余数存入bx
cmp si, 0 ;检查标志si决定是否显示
jnz print
cmp al, 0
jz exit1
mov si, 1 ;出现非零数,si置1
print: mov dl, al
add dl, 30h
mov ah, 02h ;显示
int 21h
exit1: ret
dec_div endp
;----------------------------------------------------------------------
code ends
;*************************************************************
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -