LINUX.ORG.RU

разница между as86 и nasm


0

0

в чем разница между 2 исходниками для nasm и для as86? первый работает (т.е. показывает текстовую строку), а второй нет. 1.[ORG 0]

vhod: cli mov ax, cs mov ds, ax mov es, ax mov ss, ax mov sp, start sti mov ax, 0x07c0 mov ds, ax mov ax, 0x9000 mov es, ax xor si, si xor di, di mov cx, 128 rep movsd jmp 0x9000:start start: mov ax, cs mov ds, ax mov ss, ax mov si, msg1 call show_mes loop1: jmp loop1 show_mes: pusha loop2: lodsb test al, al jz .quit mov ah, 0x0e int 0x10 jmp loop2 quit: popa ret msg1: db "Test", 0x0A, 0x0D, 0

2. .ORG 0 entry vhod vhod: cli mov ax,cs mov ds,ax mov es,ax mov ss,ax mov sp,#0x7c00 sti mov ax,#0x7c00 mov ds,ax mov ax,#0x9000 mov es,ax xor si,si xor di,di mov cx,#128 rep movsd jmpi start,0x9000 start: mov ax,cs mov ds,ax mov ss,ax mov si,#msg1 call show_mes loop1: jmp loop1 show_mes: pusha loop2: lodsb test al,al jz quit mov ah,#0x0e int 0x10 jmp loop2 quit: popa ret msg1: .byte 10,13 .ascii "Test" .byte 10,13

Ответ на: комментарий от nsav

1.[ORG 0]

entry: cli mov ax, cs mov ds, ax mov es, ax mov ss, ax mov sp, start sti mov ax, 0x07c0 mov ds, ax mov ax, 0x9000 mov es, ax xor si, si xor di, di mov cx, 128 rep movsd jmp 0x9000:start start: mov ax, cs mov ds, ax mov ss, ax mov si, msg1 call show_mes loop1: jmp loop1 show_mes: pusha loop2: lodsb test al, al jz quit mov ah, 0x0e int 0x10 jmp loop2 quit: popa ret

msg1: db "Test", 0x0A, 0x0D, 0

и as86: .ORG 0 entry vhod vhod: cli mov ax,cs mov ds,ax mov es,ax mov ss,ax mov sp,#0x7c00 sti mov si,#msg1 call kputs mov ax,#0x7c00 mov ds,ax mov ax,#0x9000 mov es,ax xor si,si xor di,di mov cx,#128 rep movsd jmpi start,0x9000 start: mov ax,cs mov ds,ax mov ss,ax mov si,#msg1 call Show_mes loop1: jmp loop1 show_mes: pusha loop2: lodsb test al,al jz quit mov ah,#0x0e int 0x10 jmp loop2 quit: popa ret msg1: .byte 10,13 .ascii "Test .byte 10,13

извиняюсь за кривой формат

andruxa_last
() автор топика
Ответ на: комментарий от ananas

1. работает
[ORG 0]

entry:  
                
        cli
        mov ax, cs
        mov ds, ax
        mov es, ax
        mov ss, ax
        mov sp, start
        sti         
        mov ax, 0x07c0
        mov ds, ax
        mov ax, 0x9000
        mov es, ax
        xor si, si
        xor di, di
        mov cx, 128
        rep movsd
        jmp 0x9000:start
start:
        mov ax, cs
        mov ds, ax
        mov ss, ax      
        mov si, msg1
        call show_mes 
loop1:	jmp	loop1
show_mes:
        pusha
loop2:
        lodsb
        test al, al
        jz quit
        mov ah, 0x0e
        int 0x10
        jmp loop2
quit:
        popa
        ret

        
msg1:    db "Test", 0x0A, 0x0D, 0

2. не работает
.ORG 0
entry	vhod
vhod:	
	cli
	mov	ax,cs
	mov	ds,ax
	mov	es,ax
	mov	ss,ax
	mov	sp,#0x7c00
	sti
	mov	si,#msg1
	call	kputs
	mov	ax,#0x7c00
	mov	ds,ax
	mov	ax,#0x9000
	mov	es,ax
	xor	si,si
	xor	di,di
	mov	cx,#128
	rep
	movsd 
	jmpi	start,0x9000
start:	mov	ax,cs
	mov	ds,ax
	mov	ss,ax
	mov	si,#msg1
	call	Show_mes
loop1:	
	jmp	loop1
show_mes:	
	pusha
loop2:	
	lodsb
	test	al,al
	jz	quit
	mov	ah,#0x0e
	int	0x10
	jmp 	loop2
quit:	popa
	ret
msg1:	.byte	10,13
	.ascii	"Test
	.byte	10,13

andruxa_last
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.