Sartomiki.net

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri
Home Esercizi Assembler Esercizio 8 - Caratteri

Esercizio 8 - Caratteri

E-mail Stampa PDF
Valutazione attuale: / 0
ScarsoOttimo 

Testo:
Si scriva un programma in linguaggio Assembler 8086 che esegua le seguenti operazioni:
a)Definisca un vettore VETTC di massimo 5 elementi, ciascuno contenente un carattere (8 bit) compresi tra ‘0’ e ‘9’
b)Controlli se gli elementi di VETTC rientrano nel range prestabilito e
b1)Se sì, converta i caratteri contenuti in VETTC nei corrispondenti numeri positivi (‘0’-0 , ‘1’-1, ...) e li memorizzi in un secondo vettore VETTN
b2)Altrimenti interrompa l’esecuzione del programma riempiendo tutti gli
elementi di VETTN al valore 0
c)Memorizzi in una variabile VAR di dimensione opportuna il numero
corrispondente all’unione degli elementi di VETTN
Esempi:
VETTC = {‘1’,’2’,’5’,’2’,’8’} VETTN = {1,2,5,2,8} VAR = 12528
VETTC = {‘1’,’2’,’A’,’2’,’8’} VETTN = {0,0,0,0,0} VAR = 0

Soluzione:
DIM    EQU    5

.model small
.stack

.data
vettc    db    '2', '1', '3', '4', '3'
vettn    db    DIM DUP ?
var        dw    0d

.code
.startup

LEA SI, vettc
LEA DX, vettn

MOV CX, DIM
ciclo:

CMP [SI], '0'
JL nospecifiche
CMP [SI], '9'
JG nospecifiche

MOV BX, '0'
MOV AX, [SI]
SUB AX, BX
PUSH SI
MOV SI, DX
MOV [SI], AX
POP SI

INC SI
INC DX
LOOP ciclo


JMP fine

nospecifiche:
MOV CX, DIM
LEA SI, vettn

ciclos:
MOV [SI], 0
INC SI
LOOP ciclos

fine:

MOV var, 0
LEA SI, vettn
ADD SI, DIM
MOV AX, 1 
MOV BX, 10
MOV CX, DIM

ciclovar:

PUSH AX
MOV DX, [SI]
MUL DX
ADD var, AX
POP AX
DEC SI
MUL BX
LOOP ciclovar

.exit
end


blog comments powered by Disqus
 

http://sartomiki.net/modules/mod_fuofb/assets/it/find-us-on-facebook-1.png

Follow me

Amici

Chi è online

 4 visitatori online

Siti amici

Banner

Notizie flash

Da oggi avete la possibilità di commentare tutti gli articoli presenti sul sito!! Scrivete le vostre opinioni!

PUBBLICITA'