조립 과정을 강의 중입니다. 이 코드는 화면을 지우고 4529를 입력하는 것입니다. 선생님이 일을 아주 잘 설명하기는하지만 아주 오래된 스타일입니다. HLA 나 매크로 등을 사용하는 대신이 스타일의 코드를 사용합니다. 이제 문제가 발생합니다. 정확한 코드를 .asm에 복사하여 붙여 넣고 지시에 따라 nasm -o 지시문을 사용하여 컴파일하더라도 프로그램은 아무 것도하지 않습니다. dosbox 내에서 실행하면 화면이 지워지지만 번호를 인쇄하지 못합니다. 내 32 비트 OS가 아무리 지원하지 않을 정도로 오래된 코드인가? 제발 도와주세요 - 나는이 코딩 스타일을 배울 필요가 있습니다 : 코스를 통과하기 위해, B : 강의 유인물은 그렇지 않으면 꽤 좋으며 ASM에 대한 큰 책을 사는 것을 주저합니다.조립품 코드가 nasm과 함께 작동하지 않습니다
[org 0x0100]
jmp start
clr: mov ax, 0xb800
mov es, ax
mov di, 0
nxt: mov word[es:di], 0x0720
add di,2
cmp di,4000
jnz nxt
ret
prntnum: push bp
mov bp, sp
push es
push ax
push bx
push cx
push dx
push di
mov ax, 0x0b800
mov es,ax
mov ax,[bp+4]
mov bx, 10
mov cx, 0
nxtdigit: mov dx,0
div bx
add dl,0x30
push dx
inc cx
cmp ax,0
jnz nxtdigit
mov di,0
nextpos: pop dx
mov dh,0x07
mov [es:di],dx
add di,2
loop nextpos
pop di
pop dx
pop cx
pop bx
pop ax
pop es
pop bp
ret 2
start: call clr
mov ax, 4529
push ax
call prntnum
mov ax,0x4c00
int 0x21
개발 환경을 강사 추천하지 않았나요해야 할 수도 있습니다 ? –
(거리 학습 아카이브 비디오 :) 텍스트 편집기에서 코드를 작성하고 nasm으로 컴파일하고 afd로 디버그하기 만하면됩니다. 나는 afd에서 매뉴얼을 찾을 수 없었다. 현재, 이것은 더 학기 이전 작품 같아서 동료들에게 물어볼 수 없습니다. –
코드는 FWIW처럼 멋지게 보이므로 COM 파일이나 환경을 구축하는 방식과 관련이 있습니다. 대부분의 실제 DOS 상자에서 유효한 가정 인 0xB800의 VGA 어댑터의 비디오 메모리에 쓸 수 있다고 가정하지만, 항상 (가상) DOS 상자에 들어 있는지 여부는 알 수 없습니다. –