'프로그래밍'에 해당되는 글 6건

  1. 2009.09.17 [ASM] 어셈으로 구구단 출력하기
  2. 2009.02.07 WinSock32 Lib 추가 2
  3. 2009.01.20 MD5 암호화 소스
  4. 2009.01.20 포인터를 이용한 큰 수 비교
  5. 2009.01.20 정수 비트로 출력하기
  6. 2009.01.20 키보드로 별그리기

음...2년전쯤에 짠거긴하지만...

도움될 분들이 있을까 해서 ㅎㄷㄷ


PAGE 60,80
TITLE  GUGUDAN
STACK SEGMENT PARA STACK 'stack';########################STACK START
STACK ENDS;###############################################STACK ENDS
CODE SEGMENT PARA 'code';#################################CODE START
 ASSUME DS:DATA,CS:CODE,SS:STACK
;----------------------------MAIN-----------------------------------
MAIN PROC FAR
DATASEGMENT_USE:  ;   데이타 세그먼트의 사용--DATASEGMENT_USE IN
 MOV AX,DATA
 MOV DS,AX
STACT_PROG:     ;   스텍 프롤로그 과정------STACT_PROG IN MAIN
 PUSH BP
 MOV SP,BP    
 SUB SP,20
 
DAN_SU_SETTING:   ;   수의 입력-----------DAN_SU_SETTING IN MAIN
 MOV AH,01h
 INT 21h
 
 CMP AL,'A'    ;   A이면 종료
 JE ENDCODE
 
 MOV DAN,AL    ;   입력받은 수를 단에 저장
 MOV BL,31h
 
 CALL DOWN     ;   개행하는 프로시져 호출
 MOV CX,9     ;   카운터 9로 초기화
 
GUGUDAN:;--------------------------------------------GUGUDAN IN MAIN
 MOV DL,DAN    ;   단을 출력
 MOV AH,02h
 INT 21h
 CALL SPACE    ;   개행 프로시져 호출
 MOV DL,'*'    ;   별을 출력
 MOV AH,02h
 INT 21h
 CALL SPACE
 
 MOV DL,BL     ;   수를 출력
 MOV AH,02h
 INT 21h
 CALL SPACE
  
  MOV DL,'='    ;   =을 출력
  MOV AH,02h
  INT 21h
 
 CALL SPACE
 
 CALL REMUL    ;   결과값 프로시져 호출
 CALL DOWN   
 
 ADD BL,1     ;   수를 1 증가
 LOOP GUGUDAN   ;   카운터 만큼 루프
 
 JMP DAN_SU_SETTING
ENDCODE:;--------------------------------------------ENDCODE IN MAIN
 MOV AH,4Ch
 INT 21h
MAIN ENDP
;------------------------------MAIN END----------------------------
;-------------------------------SPACE------------------------------
SPACE PROC NEAR   ;   한칸띄우는 프로시져
 MOV DL,' '
 MOV AH,02h
 INT 21h
 RET
SPACE ENDP
;----------------------------SPACE END-----------------------------
;------------------------------REMUL------------------------------- 
REMUL PROC NEAR
 MOV DX,0000h   ;   초기화
 PUSH DX      ;   마지막 pop를 알기위해 저장
 MOV DL,DAN    ;   단을 DL에 저장
 MOV AL,BL     ;   수를 AL에 저장
 SUB DL,30h    ;   정수화
 SUB AL,30h    ;   정수화
 MUL DL      ;   곱하기
ITOA: ;-----------------------------------------------ITOA IN REMUL
 DIV DIVSU     ;   10으로 AL을 나눔
 MOV DL,AH     ;   나머지를 DL로 이동
 ADD DL,30h    ;   정수형을 아스키화시킴
 MOV DH,00h    ;   상위 8비트 초기화
 MOV AH,00h    ;   상위 8비트 초기화
 PUSH DX      ;   스텍에 저장
 CMP AL,00h    ;   비교하여 더이상 나눌것이 있냐?
 JE PRINT_SU    ;   없으면 출력문으로
 JMP ITOA     ;   있으면 다시 ITOA 레이블로
 
PRINT_SU:;-----------------------------------------PRINT_SU IN REMUL
 POP DX;      ;   저장된것을 가져옴
 CMP DL,00h    ;   비교,더이상 출력할것이 있냐?
 JE ENDCODE    ;   없으면 종료
 
 MOV AH,02h    ;   있으면 출력
 INT 21h
 
 JMP PRINT_SU
ENDCODE:  ;---------------------------------------ENDCODE IN REMUL
 RET 
REMUL ENDP
;------------------------------REMUL END---------------------------
;--------------------------------DOWN------------------------------
DOWN PROC NEAR   ;   줄바꿈 프로시져
 MOV DL,0Ah
  MOV AH,02h
  INT 21h
  MOV DL,0Dh
  MOV AH,02h
  INT 21h
  RET
DOWN ENDP
;-------------------------------DOWN END---------------------------
CODE ENDS;################################################CODE ENDS
DATA SEGMENT PARA 'data';################################DATA START
DAN DB 1 DUP(?)   ;   단을 저장
DIVSU DB 10     ;   나누기위한 10 저장
DATA ENDS;################################################DATA ENDS
 END
Posted by Nvdark
,
윈도우즈 소켓 프로그래밍 하시는 분들은 컴파일을 위하여
WS2_32.lib 를 링크를 시켜야 한다.

프로젝트 설정에서 세팅에 링크부분에 보면 오브젝트 라이브러리가 있는데
그곳에 추가를 시켜주면 된다.

VS 2005~2008 유져는 저도 잘..;;
이제 전향하려고 바꿔가고 있는데 아직 어디서 라이브러리 추가해야하는지 못찾았음 ㅠㅠ
아시는분 뎃글로 좀 ㅠ


-ADD
 VS2008에서 lib 추가법.
프로젝트 설정에서 구성 속성-> 링커 -> 입력 -> 추가 종속성에 해당 lib를 추가해주면 됨.
물론 lib도 구성 속성-> 링커-> 일반 -> 추가 라이브러라 디렉토리에 해당 lib가 있는 폴더 추가 해야함.

winsock을 위한 라이브러리는 속성-> 링커->명령어 라인 에서 ws2_32.lib를 추가해주면됨
Posted by Nvdark
,

이거 2006년도에 수업들으면서 김락현 교수님이 보라고 주신 소스.
그러나...대략 자바 ㅈㅈ


Posted by Nvdark
,
#include <stdio.h>
#include <conio.h>
void main()
{
	//변수선언
	int num[6];
	int *add=num;
	int r,i,l;
	//5개의 숫자 입력
	for(r=0;r<=4;r++)
	{
		printf("\n5개의 숫자를 입력하세요=");
		scanf("%d",&num[r]);		
	}
	//배열의 주소값과 갑들출력
	for(i=0;i<=4;i++)
		printf("address=%u,num[%d]=%d\n",&num[i],i,num[i]);
	//가장높은수를 알아내기위한 비교
	int temp=*add;
	for(l=0;l<5;l++)
	{
		add++;
		for(int a=0;a<5;a++)
		{
			if(temp<=*add)
			{
				temp=*add;		
			}
		}
	}
	//높은수 출력
	printf("max=%d\n",temp);
}


	
	
Posted by Nvdark
,
#include <iostream.h>  // 구버전의 C++일경우 iostream.h 


void PrintBit(int n)
{
  
    for(int i=1<<16; i>0; i>>=1){   // 최상위비트부터 1비트씩 이동 
        if(n&i)
            cout << "1";            // 만일 비트가 1이면 1출력 
        else
            cout << "0";            // 만일 비트가 0이면 0출력 
    }
    cout << endl;
}

int main()
{
    int n;
    
    cout << "숫자를 입력하세요: ";
    cin >> n;
    PrintBit(n);
    return 0;
}

Posted by Nvdark
,
예전에 락현이형이 짰던거.....

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>

#define LEFT 75
#define RIGHT 77
#define UP 72
#define DOWN 80
#define ESC 27


int x,y;


// 콘솔화면화면(도스화면) 상의 x,y위치로 커서를 이동시킨다.(콘솔화면 가로 0-79, 세로 0-25)
void gotoxy(int x, int y)
{
COORD Cur;
Cur.X=x;
Cur.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur);
}

void prx()
{
gotoxy(x,y);
putchar('*');
}

void main()
{
char usrinput;

x = 30,y=10;

while( usrinput != ESC )
{
prx();

/////////////////////////////////// 키보드로 부터 입력된 값이 특수문자(방향키)임을 먼저 확인하고 만약 방향키라면 어떤 방향인지
usrinput = getch(); //   조사한다.
if( usrinput == 0xE0 ) //
usrinput = getch(); //
///////////////////////////////////

switch(usrinput) {
case UP :
y--;
break;
case DOWN:
y++;
break;
case RIGHT:
x++;
break;
case LEFT:
x--;
break;
default :
break;

}
}

system("cls");
gotoxy(30,10);
printf("프로그램을 종료합니다.");
}
 
Posted by Nvdark
,