נשלח בתאריך: 30 August 2005 בשעה 22:19 | | IP רשוּם
|
|
|
|
אז זהו שפה יש לי בעיה אני לא מצליח לעשות את זה ...
הינה יש לי קוד שעשיתי הבעיה הוא שאני לא מצליח לעשות את זה עם מספרים גדולים כמו
1000000
---------------------------------------------------
LF EQU 0AH CR EQU 0DH
DSEG SEGMENT DSEG ENDS SSEG SEGMENT STACK DW 100H DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,SS:SSEG BEGIN: ; uses di, bx, cx, dx ; ; square root of AX via Newton-Raphson iteration.
mov di,ax mov ax,133 start_loop: mov bx,ax ;xor dx,dx ;mov ax,di mov dx,si mov ax,di div bx mov di,ax mov si,dx add ax,bx adc dx,0 shr ax,1 rcr ax,1 mov cx,ax sub cx,bx cmp cx,2 jae start_loop CALL PRINT_AX_2
READCHAR: MOV AH,1 INT 21H RET
PRINTCHAR:MOV AH,2 INT 21H RET
PRINT_NEWLINE: MOV DL,CR CALL PRINTCHAR MOV DL,LF CALL PRINTCHAR RET ;*********************************************************** **** print_ax_1 proc near MOV CL,4 MOV DL,AL SHR DL,CL CALL PRINT_AX MOV DL,AL AND DL,0FH CALL PRINT_AX MOV DL,AH SHR DL,CL CALL PRINT_AX MOV DL,AH AND DL,0FH CALL PRINT_AX ret print_ax_1 endp
print_ax_2 proc near MOV CL,4 MOV DL,AH SHR DL,CL CALL PRINT_AX MOV DL,AH AND DL,0FH CALL PRINT_AX MOV DL,AL SHR DL,CL CALL PRINT_AX MOV DL,AL AND DL,0FH CALL PRINT_AX ret print_ax_2 endp
PRINT_AX PROC NEAR PUSH AX ADD DL,30H CMP DL,'9' JBE OK ADD DL,7 OK: MOV AH,2 INT 21H POP AX RET PRINT_AX ENDP
CSEG ENDS END BEGIN
|