몇 가지 코드 언어로 작업을 중단 한 지 얼마되지 않아 며칠 전 학교에서 어셈블리로 시작 했으므로 몇 가지 코드 작업에 대한 논리를 이해하기 시작했습니다. 사실, 내가 시도한 것은 두 변수 간의 간단한 ADD 연산입니다. 내 코드를 에뮬레이션하기 위해 emu8086을 사용합니다. 왜 내가 이해할 수 없는지 보여 드리겠습니다. 난 그냥 8 비트에 세 개의 변
필자는 어떤 키 누르기에 따라 다른 기능을 포함하는 프로그램을 만들었습니다. 내 프로그램은 폴더를 만든 다음 그 폴더 안에 .txt 파일을 만듭니다. 폴더를 추가하고 확인하면서 .txt 파일의 업데이트 된 목록을 표시하고 싶습니다. 그러나 프로그램을 실행하면 만들어진 최신 .txt 파일 만 표시됩니다. 이 문제를 해결하고 모든 .txt 파일 목록을 표시하려
이것은 매우 기본적인 것일 수 있지만 실제로 이해할 수는 없습니다. 8255의 A 및 B 포트를 사용하여 단어를 입력하고 있습니다. 내가 좋아하는 뭔가가 있습니다 MOV DX, PORT_B
IN AL, DX
MOV AH, AL
MOV DX, PORT_A
IN AL, DX
MOV DX, AX
내가 여기에 몇 가지 질문이있다 : 코드 세그먼트에서
그래서 DB (바이트 정의) 및 DUP (중복) 지시문에 대한 기본적인 이해에 의문을 갖게하는 문제가 발생했습니다. 내가 그들을 이해 한 방법은 다음과 같습니다 NUM DB 34는 NUM라는 이름의 변수를 생성하고이 값을 34 실질적으로 NUM = 34으로 할당합니다. NUM DB 34 DUP(?)은 각각 34 개 항목의 배열을 제공하며 각 항목은 할당되지
내 기본 부트 로더에서 일부 기본 (.bas) 파일을로드해야합니다. 내 부팅 로더는 매우 기본이며, 약간의 텍스트를 표시하고 .bas 파일을 메모리에로드하고 실행하는 것으로되어 있습니다. (나는 어셈블리에 아주 새로운 오전, 당신은 몇 가지를 설명해야 할 수도 있으므로 완전히 아직 이해하지 않습니다.) 여기 지금까지 내 간단한 코드입니다 (이것은 않는 모든
16 비트 타겟 용 GNU C++ 컴파일러 인 Sourcery IA16 compiler을 다운로드했으며 작동합니다 (멀리 포인터를 지원하지는 않지만 인라인 asm 레지스터 할당과 관련된 결함이 있지만). 내가 몇 가지 컴파일러 옵션을 추가해야한다, 그림에서 보듯이 /tmp/ccBB3kEN.o: In function `foo()':
(.text+0x38):
저는 어셈블리가 처음이고 메모리에 저장된 문자열을 반복하려고합니다. lea (실효 주소로드) 명령을 사용하여 문자열의 주소를 가져올 수 있지만 이제 레지스터에 저장된 해당 주소를 사용하려고합니다. lea string, %edx ; Load effective address of string into edx
lw %edx, %eax ; Load eax w
VIF 및 VIP 플래그의 사용을 포함하여 가상 8086 모드의 작동을 설명하는 Intel Software Developer 's Manual 3 권의 20 절을 읽었습니다. 그러나, 나는 아직도 몇몇 것에 관하여 혼동 스럽다. VIF 플래그는 IF 플래그의 대리자로 사용되므로 8086 에뮬레이터 (아마도 일부 사용자 공간 프로그램)가 에뮬레이트하는 리얼