ejemplos lenguaje ensamblador
¿Cómo logra esto el programa? "Toma los datos de Tabla usando direccionamiento indexado y usando una instrucción AND y una máscara #$01 elimina todos los bits del dato exceptoel LSB que indica si el número es par o impar"
Pruebe el programa y si tiene dudas nos cuenta en el edmodo.
ORG RAMStart
Tabla DS.B 5
Impar DS.B 1
Par DS.B 1
ORG ROMStart
INCLUDE'MCUInit.inc'
Entry:
_Startup:
LDS #RAMEnd+1 ; initialize the stack pointer
; Call generated Device Initialization function
CALL MCU_init
mainLoop:
CLR Impar
CLR Par
LDX #$0000
Regrese: LDAATabla, X
ANDA #$01
BEQ Salto
INC Impar
BRA Sigue
Salto: INC Par
Sigue: INX
CPX #$05
BNE Regrese
STOP
"Multiplica 2 números de 1 byte (cada uno) almacenados en memoria yalmacena el resultado en una variable de 2 bytes". Si me pregunta ¿cómo hace la multiplicación el programa? la respuesta es "suma el valor de Dato2 con si mismo tantas veces como lo indica el valor deDato1 y almacena el resultado en memoria"
Corra el programa con varios datos
a) Dato1 = $03 y Dato2 = $04 el resultado será Respuesta = $000C (3 x 4 = 12)
b) Dato1 = $03 y Dato2 = $FF elresultado será Respuesta = $02FD (3 x 255 = 765)
c) Dato1 = $FF y Dato2 = $FF el resultado será Respuesta = $FF01 (255 x 255 = 65025)
Si tiene dudas por favor enviarlas por el edmodo.
ORGRAMStart
Dato1 DS.B 1
Dato2 DS.B 1
Var DS.B 1
Respuesta DS.W 1
ORG ROMStart
INCLUDE 'MCUInit.inc'
Entry:
_Startup:
LDS #RAMEnd+1 ; initialize the stack pointer
; Call generated DeviceInitialization function
CALL MCU_init
mainLoop:
CLR Var
CLRB
CLC
LDAA Dato1
Sigue: ADDB Dato2
BCC Salto
INC Var
Salto: DECA
CMPA #$00
BNE Sigue
LDAA Var
STD Respuesta
STOP
Regístrate para leer el documento completo.