ayuda
hola, estoy recien empesando a aprender asm.
pero no puede entender lo que esta mal en este codigo, si alguien me puede ayudar estaria muy agradecido =)
esto es lo que me dice el tasm :
<20> rotate count out of range
<21> rotate count out of range
.model tiny
.data
Y dw 0050h
x dw 0050h
.code
org 100h
start:
mov ax,13 ; mode = 13h
int 10h ; call bios service
mov ax,0A000h
mov es,ax
mov bx,[x]
mov dx,[y]
mov di,bx
mov bx,dx
shl dx,8
shl bx,6
add dx,bx
add di,dx
mov al,4
stosb
xor ax,ax ; function 00h - get a key
int 16h ; call BIOS service
mov ax,3 ; mode = 3
int 10h ; call BIOS service
mov ax,4C00h ; exit to DOS
int 21h
end start
pero no puede entender lo que esta mal en este codigo, si alguien me puede ayudar estaria muy agradecido =)
esto es lo que me dice el tasm :
<20> rotate count out of range
<21> rotate count out of range
.model tiny
.data
Y dw 0050h
x dw 0050h
.code
org 100h
start:
mov ax,13 ; mode = 13h
int 10h ; call bios service
mov ax,0A000h
mov es,ax
mov bx,[x]
mov dx,[y]
mov di,bx
mov bx,dx
shl dx,8
shl bx,6
add dx,bx
add di,dx
mov al,4
stosb
xor ax,ax ; function 00h - get a key
int 16h ; call BIOS service
mov ax,3 ; mode = 3
int 10h ; call BIOS service
mov ax,4C00h ; exit to DOS
int 21h
end start
El error (linea 20 y 21) biene porque la instruccion SHL no asepta (al menos en teoria) mas de un desplasamiento SHL reg
Lo que podes hacer es usar la instruccion ROL que esta si puede contener de 1 a 16 rotaciones.
Algunos compiladores que crean codigo ensamblador hacen para rotar 4 veces
ROL BX,1
ROL BX,1
ROL BX,1
ROL BX,1
y asi, dicen que es una manera segura para todos los ensambladores. Proba.
Lo que podes hacer es usar la instruccion ROL que esta si puede contener de 1 a 16 rotaciones.
Algunos compiladores que crean codigo ensamblador hacen para rotar 4 veces
ROL BX,1
ROL BX,1
ROL BX,1
ROL BX,1
y asi, dicen que es una manera segura para todos los ensambladores. Proba.
tenias rason, gracias.
pero tengo otro problema.....
el punto que se dibuja en la pantalla me sale blanco... no deberia ser rojo? (al = 4)
saludos
pero tengo otro problema.....
el punto que se dibuja en la pantalla me sale blanco... no deberia ser rojo? (al = 4)
saludos
