분류 전체보기34 윈도우 10에서 도스박스로 도스디버거(DOS DEBUG) 실행하기 간단히 어셈블이 가능한 도스 디버거를 구동하는 방법입니다. DOSBox ━ 도스용 게임 구동기 도스박스에 대한 모든 것, 도스용 게임 구동, 정식 버전과 차별화된 DOSBox SVN 버전 제공 cafe995.daum.net [준비물] 도스박스 (위 사이트로 들어가셔서 다운로드 하시면 됩니다.) 디버거(debug.exe) (첨부파일로 위에 올려두었습니다.) 외부저장장치 (USB 같은 것.) * 참고로 역슬래쉬 입력 하는 방법은 \ 키 입니다. 백스페이스 바로 옆에있는거 맞습니다. 일단 USB저장장치나 다른 외부 저장소가 필요합니다. 다운로드 받은 디버거(debug.exe)를 외부저장소에 넣어줍니다. 도스박스를 구동합니다. 그리고 드라이브 레터를 확인해 줍니다. 제 경우는 G: 네요. mount d(도스박스.. 2019. 8. 16. emu8086으로 어셈블리어 연습하기 [로또번호용 난수 6자리 뽑기] .MODEL SMALL .CODE ORG 100h ;100h번지부터 코드시작. ;---------------------------------------------- PROG: CALL MAIN ; 난수를 만들고 출력하는 역활을 담당. CALL ENND ; 프로그램을 종료하는 역활. ;---------------------------------------------- BLANK DB ' $' ; 공백출력을 위한것. ;---------------------------------------------- MAIN PROC NEAR ; 메인 프로시저 시작 MOV CX,06 ; 6개의 수를 뽑는다. AGAIN: PUSH CX ; CX레지스터 데이터를 스택에 저장한다 (바로 위에서 수록한 데이터 보호를 위함.) DR.. 2019. 8. 15. emu8086으로 어셈블리어 연습 [16진수를 10진수로 변환 후 출력하기] 이번엔 AX레지스터에 16진수를 입력받았다고 가정하고, 이것을 10진수로 처리하여 출력해보겠습니다. .MODEL SMALL .CODE ORG 100h ;100h번지부터 코드시작 CALL MAIN ;'MAIN'프로시저 호출 HLT ;프로그램 중단 (MAIN 프로시저가 실행이 끝나면 HLT로 프로그램을 중단합니다.) ;------------ DECADT DB 7 DUP ('$') ;DECADT라는 바이트크기의 데이터공간을 설정. 메모리에 '$'를 7개 채운다. ;----------- MAIN PROC NEAR ;MAIN 프로시저의 시작 MOV AX,1234h ;1234h라는 수를 입력받았다고 가정했습니다. MOV BX,10 ;10으로 나누어 주기위해 BX레지스터에 10을 수록. MOV CX,0 ;CX레지스터.. 2019. 8. 15. emu8086을 이용한 어셈블리어 연습 [16진수를 입력하여 16진수로 저장하기] 어셈블리어에선 사용자가 어떤 값을 입력하면 그 값에 대응하는 아스키코드값을 저장하게 됩니다. 가령 'A'를 입력받으면 레지스터엔 41이 저장되게 됩니다. 때문에 저장받은 후에 또다른 처리를 해주어야 합니다. .MODEL SMALL .CODE ORG 100h ERRORMSG DB 'ERROR!$' START: INPUTNUM PROC NEAR INPUT: MOV AH, 1 ; 문자 하나를 입력받는 기능번호 1번을 수록합니다. INT 21h ; CMP AL, 0Dh ; 엔터키(아스키코드:0Dh)가 입력되면 입력을 종료하고 메인루틴으로 돌아가는 역활을 합니다. JE CRLF ; 입력받은 키가 엔터키라면 먼저 띄워쓰기 루틴(CRLF)으로. 그 다음 메인루틴으로 이동하게 됨. SUB AL, 30h ; 아스키코드상.. 2019. 8. 15. emu8086으로 어셈블리어 연습 [10진수를 입력받아 16진수로 저장하기.] START: ; START 라벨입니다. 저장처리가 끝나고나면 돌아와서 또 다른수를 입력하러 돌아옵니다. MOV AH, 01 ; 한 문자를 입력받는 기능번호 1번을 AH레지스터에 저장. INT 21h ; SUB AL, 30h ; 문자 하나를 입력받은뒤 30h를 빼줍니다. 이유는 아래에서 설명하겠습니다. JL ENDPROG ; 연산결과가 0보다 작다면 ENDPROG로 분기합니다. (수가 아닌 다른 문자 입력했다는 뜻.) CMP AL,9 ; 만일 9와 비교해서 수가 크다면? JG ENDPROG ; ENDPROG로 분기해줍니다.(수가 아닌 다른문자 입력했다는 뜻.) CBW ; AL레지스터값을 AX값으로 만들어 줍니다. 이유는 아래에서 설명하겠습니다. XCHG AX,BX ; AX값과 BX값을 맞바꾸어 줍니다. 최.. 2019. 8. 15. emu8086 어셈블러로 어셈블리어 연습 [소문자는 대문자로, 대문자는 소문자로 바꾸어 출력하게 하기] .MODEL SMALL ;메모리크기 설정 .STACK .CODE ;여기 아래부터 코드시작 MOV AH,1 ;사용자로부터 문자하나를 입력받을 준비. 입력받은 문자는 AL 레지스터에 저장된다. INT 21h CMP AL,40h ;입력받은 문자가 대문자인가 소문자인가? JG ISAA ;일단 40h부터 크다면 세부 탐색으로 넘기기 (소문자인가 대문자인가) JZ DISP2 ;해당사항 없으면 그대로 출력 JL DISP2 ;해당사항 없으면 그대로 출력 ISAA: ;세부탐색구간 CMP AL, 5Bh ;5b아스키코드와 비교해보자. JG LOWER ;입력한 문자의 아스키코드값이 더 크다? 우선 소문자로 판별. JL UPPER ;작다면 대문자로 판별. UPPER: ;입력한 문자가 대문자로 결정됐을때. ADD AL,20h ;.. 2019. 8. 15. 이전 1 2 3 4 5 6 다음