Я изучаю сборку как часть своего курса. Этот код предназначен для очистки экрана, а затем введите 4529. Это довольно старый стиль школы, хотя наш учитель очень хорошо объясняет, поэтому я буду придерживаться этого стиля кода вместо использования HLA или макросов и т. Д. Теперь приступим к этой проблеме. Даже если я скопирую точный код в .asm и скомпилирую его с директивой nasm -o, как указано, программа ничего не делает. Если я запустил его в dosbox, он очистит экран, но не распечатает номер. код настолько древний, что моя 32-битная ОС не будет поддерживать его ни на что? пожалуйста, помогите - мне нужно изучить этот стиль кодирования: пройти курс, 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-файл или среду, в которой вы его запускаете. предполагает, что он может записывать видеопамять VGA-адаптера в 0xB800, что, безусловно, является допустимым предположением для большинства реальных DOS-боксов, но я не знаю, всегда ли это выполняется в (виртуальном) окне DOS. –