Está en la página 1de 5

En C En Ensamblador

Int v1 area bass


v1: blk 2
Main{ área text
v1=v1+345; add [v1], 0x59 || add[v1],>345 La parte baja
} de 345
add[v1+1], 0x01|| add[v1+1]<345 La parte
alta

fin:
JMP fin

En C En Ensamblador
Log Int v1 area bass
v1: blk 4
Main{ area text
v1=v1+345; add [v1], 0x59 || add[v1],>345 La parte baja
} de 345
add[v1+1], 0x01|| add[v1+1],<345 La parte
alta
add[v1+2],0
add[v1+3],0

fin:
JMP fin
En C En Ensamblador
Char v1,v2,v3 area bass
v1: blk 1
Main{ v2: blk 1
V1=v2—v3; v3: blk 1
V2=v1==0?-v3:5;
area text
} move A, [v2]
sub A, [v3]
move[v1], A
jz Asignar_v3av2 Brinca si z=1
mov[v2],5
jmp continuar

asignar_v3av2:
mov[v2],0
mov A, [v3]
sub [v2], A
mov A, [v3]
CPL A
Inc A
Mov [v2], A
Para el primer código, se tiene un total de 20
ciclos con 7 bytes, para el segundo 20 ciclos
con 6 bytes, de acuerdo a la aplicación del
programa se selecciona el código.
En C En Ensamblador

mov A, [VA] area bass


add A, [Vn] VA: blk 1
mov [VA], A Vn: blk 1

--- area text


mov A, [Vn] mov [VA],0
add [VA], A mov [Vn],0

CicloFor:
Descripción: Se trata de un ciclo for:
Inicio: VA=0 cmp [vn],5
Si JNC fin_de_Ciclo
Vn=0, vn<5, vn++ mov A, [Vn]
VA=A+n add [VA], A

Fin dec [Vn]


JMP CicloFor

Fin_de_Ciclo:
JMP fin_de_ciclo
En C En Ensamblador

area bass
area bass V1: blk 1
V1: blk 1 V2: blk 1
V2: blk 1
area text
area text mov [V1],0
mov [V1],0 mov [V2],3
mov [V2],3 mov [V3],4
mov [V3],4
CicloFor:
CicloFor:
cmp [v3],0
mov A, [V3] JZ fin_de_Ciclo
JZ fin_de_Ciclo
mov A, [V3]
ASL A ASL A
add A, [v2] add A, [v2]
add [v1], A add [v1], A

dec [v3] dec [v3]


JMP CicloFor JMP CicloFor

Fin_de_Ciclo: Fin_de_Ciclo:
JMP fin_de_ciclo JMP fin_de_ciclo
Diferencias entre los dos programas, en la
segunda se ha eliminado la comparación y se a
movido el comando mov A ,[v3] porque desde
el momento que se mueve al acumulador, se
enciende la bandera de cero
En C En Ensamblador
Subrutina que haga espera de 1 seg
Ciclo3 area bss
Mov[temp1+2], 24 temp1: blk 3

Pausa1s: mov[temp1+1], 0x243 area txt


Ciclo2:
call pausa1s
8 mov [temp1+1], 0xFF
Ciclo1:
4 NOP 4080 ciclos
7 DEC[temp1] 1,045,500 ciclos
5 sbb [temp1+1], 0 24,046,960 ciclos

7 DEC[temp1+1]
5 JNZ Ciclo2, 0

7 DEC[temp1+2]
5 JNZ Ciclo3

También podría gustarte