上课听不清老师讲什么可太难了,口音究极浓重,上课大部分脑力都要花在翻译老师讲了什么(所以就没怎么听)
导致这么简单的东西写了好久(边写边学
孩子傻了,下次好好学(并不
asm代码没高亮,凑合着看看吧,或者复制到编辑器里看
.MODEL SMALL
.STACK 4096
.CODE
MAIN PROC FAR
.386 ;声明为80386,不然不能用EAX
START:
MOV EAX,2 ;EAX作为待测数
PIN:
MOV EBX,2 ;EBX作为除数
MOV ECX,EAX ;保留一份EAX给ECX,div时候EAX值会变
AGAIN1:
CMP EBX,EAX ;若EAX与EBX相等,则为素数
JZ OUTPUT
MOV EDX,0
DIV EBX
MOV EAX,ECX
CMP EDX,0 ;若余数为零,则到下一个数
JZ NEXT
INC EBX
CMP EBX,317 ;EBX大于根号100000后就不用算了,直接就是素数
JZ OUTPUT
JMP AGAIN1
NEXT:
MOV EAX,ECX ;恢复EAX的值并加一
INC EAX
CMP EAX,100001
JZ EXIT
JMP PIN
OUTPUT: ;将EAX的值转换成字符输出每一段是一位
MOV EDX,0
MOV EBX,10000
DIV EBX
MOV EBX,EDX
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
MOV EAX,EBX
MOV EDX,0
MOV EBX,1000
DIV EBX
MOV EBX,EDX
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
MOV EAX,EBX
MOV EDX,0
MOV EBX,100
DIV EBX
MOV EBX,EDX
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
MOV EAX,EBX
MOV EDX,0
MOV EBX,10
DIV EBX
MOV EBX,EDX
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
MOV EAX,EBX
MOV EDX,0
MOV EBX,1
DIV EBX
MOV EBX,EDX
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,0Ah
MOV AH,02H
INT 21H
JMP NEXT
EXIT:
MOV AH,4CH
INT 21H
MAIN ENDP
END START
END
Comments | NOTHING