Ассемблерный код не работает с Nasm - PullRequest
0 голосов
/ 06 марта 2012

Я учу ассемблер как часть моего курса.Этот код предназначен для очистки экрана, а затем введите 4529. Это довольно старый стиль, хотя наш учитель объясняет все очень хорошо, поэтому я буду придерживаться этого стиля кода вместо использования HLA или макросов и т. Д. Теперь перейдем к проблеме.Даже если я скопирую и вставлю точный код в .asm и скомпилирую его с помощью директивы nasm -o в соответствии с инструкциями, программа ничего не сделает.Если я запускаю его в dosbox, он очищает экран, но не может распечатать номер.код настолько древний, что моя 32-битная ОС не будет его поддерживать ни на что?пожалуйста, помогите - мне нужно выучить этот стиль кодирования для: пройти курс, b: материалы для лекций довольно хороши, в противном случае я не решаюсь купить большую книгу по ASM.

       [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

Ответы [ 2 ]

0 голосов
/ 08 сентября 2012

Вы, похоже, используете 16-битный код в NASM, вам может потребоваться сообщить nasm, что код 16-битный с синтаксисом

[16 bit]

в начале

0 голосов
/ 07 марта 2012

Проблема решена - кажется, я писал с использованием атрибута черного цвета, поэтому текст не был виден.Как только это изменилось, все программы работают нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...