Trois code en motorola x68k, sparc et en mips r3000

Contenu du snippet

bah , voila s code est le fruit d'un travail mono ki je v1 de le realise
il y a 3 code ecrie dans les 3 assembleur
le premier fais la fonction de Akermane recurssive, la raçine avec une methode simple celle de Newton Raffessone, et le dernier est celui d'un converteur entre base 10,16 et 2 (binaire)
il veux faus les 3 simulateur et je veus assure k'ils sont disponible
il simple et poure n'importe kistion je suis la inform113@hotmail.com

Source / Exemple :


.text#akremann en r3000
main:
#----------------------------------------
 la $a0 msg1
 jal affichemsg
#----------------------------------------
while_m_negative:
 
 la $a0 msg3 
 jal affichemsg

 jal lecturenbre

 bgez $v0 m_positive

 la $a0 msg4
 jal affichemsg

 b while_m_negative
#-----------------------------------------
m_positive:
 move $t2 $v0        #$t2=M
#------------------------------------------
while_n_negative:
 
 la $a0 msg2
 jal affichemsg
 
 jal lecturenbre
 
 bgez $v0 n_positive

 la $a0 msg4
 jal affichemsg
 
 b while_n_negative
#-------------------------------------------
n_positive:
 move $t1 $v0         #t1=N
#------------------------------------------
 la $a0 msg5
 jal affichemsg
 
 move $a0 $t2
 jal affichenbre
 
 la $a0 msg6
 jal affichemsg
 
 move $a0 $t1
 jal affichenbre
 
 la $a0 msg7
 jal affichemsg
 
 li $t3 0
 jal ack             #$t3=Ack(m,n)

 move $a0 $t3
 jal affichenbre
 
 la $a0 msg8
 jal affichemsg

 li $ra 0
 li $v0 10
 syscall
#-----------Fin de programme---------------------
#------------Procedures--------------------------
affichenbre:
 li $v0 1
 syscall
 j $ra 

affichemsg:
 li $v0 4
 syscall
 j $ra

lecturenbre:
 li $v0 5
 syscall
 j $ra

ack:
 beqz $t2 fin 

 beqz $t1 test 

 addi $sp $sp -12
 sw $t1 0($sp)
 sw $t2 4($sp)
 sw $ra 8($sp)
 
 subu $t1 $t1 1
 
 jal ack
 
 lw $ra 8($sp)
 lw $t2 4($sp)
 lw $t1 0($sp)
 
 move $t1 $t3
 subu $t2 $t2 1

 jal ack

 lw $ra 8($sp)
 lw $t2 4($sp)
 lw $t1 0($sp)
 addi $sp $sp 12
 
 j $ra

test:
 sub $sp $sp 4
 sw $ra 0($sp)

 subu $t2 $t2 1 
 li $t1 1
 
 jal ack
 
 lw $ra 0($sp)
 addu $sp $sp 4
 add $t2 $t2 1
 li $t1 0
 j $ra

fin:
 addu $t3 $t1 1
 j $ra
#**********************************************
.data 
 msg1:.asciiz "---------------Fonction de Ackerman----------\n"
 msg2:.asciiz "\nEntree la valeur de N="
 msg3:.asciiz "\nEntree la valeur de M="
 msg4:.asciiz "\nLa valeur doit etre positive au nul"
 msg5:.asciiz "Ack("
 msg6:.asciiz ","
 msg7:.asciiz ")="
 msg8:.asciiz "\n----------------Fin--------------------------\n"

# racine 
.data
mot :.asciiz "entree x="
mot1:.asciiz "la racine est :"
sautligne:.asciiz "\n"
ff:.float 2.00000000
fff:.float 0.00000001
d:.float -1.00000000
dd:.float 0.00000000
ddd:.float 1.00000000
#---------------------------------------
.text
main:
 li $v0 4
 la $a0 mot
 syscall
 li $v0 6
 syscall
 mov.s $f4 $f0
#---------------------------------------
 sub.s $f6 $f6 $f6
 lwc1 $f7 d
 lwc1 $f2 dd
 sub.s $f0 $f0 $f0
#---------------------------------------
loop1:
 mul.s $f8 $f0 $f0
 sub.s $f8 $f8 $f4 
 mov.s $f6 $f0
 c.lt.s $f2 $f8 
 bc1t loop2
 c.eq.s $f8 $f2 
 bc1t fin 
 lwc1 $f9 ddd
 add.s $f7 $f7 $f9
 add.s $f0 $f0 $f9
 b loop1
#---------------------------------------
loop2:
 lwc1 $f5 ff
 mov.s $f0 $f6 
 lwc1 $f6 fff
loop3:
 mul.s $f1 $f0 $f5  #f'(x)
 mul.s $f2 $f0 $f0
 sub.s $f2 $f2 $f4  #f(x)
 div.s $f3 $f2 $f1
 sub.s $f3 $f0 $f3
 sub.s $f7 $f0 $f3
 c.lt.s $f7 $f6  
 bc1t fin1
 mov.s $f0 $f3
 b loop3
fin1:
 mov.s $f12 $f3
 b fink
fin:
 mov.s $f12 $f0
fink:
 li $v0 4
 la $a0 mot1
 syscall
 li $v0 2
 syscall
 la $a0 sautligne
 li $v0 4
 syscall 
 li $v0 10
 syscall
 
#converteur
.text
main:
 la $a0 msg1
 jal affichemsg
lec:
 la $a0 msg2
 jal affichemsg
 jal lecturenbre
 move $s1,$v0
 beq $v0 10 base
 beq $v0 16 base
 beq $v0 2 base
 la $a0 msg5
 jal affichemsg
 b lec
base:
 la $a0 msg3
 jal affichemsg
 jal lecturemsg
 beq $s1 10 base10
 beq $s1 16 base16
#*************************************************
#-------------base 2 comme base de depart----
base2:
 la $t0 nbre
 li $t4 0
 sub $t0 $t0 1
 li $t6 1
#-------------verification de nbre----------- 
vrif2:
 addu $t0 $t0 1
 lb $t1 ($t0)
 beqz $t1 trait2
 beq $t6 8 trait2
 beq $t1 10 trait2  #10=code de \n
 subu $t1 $t1 48
 add $t6 $t6 1
 beq $t1 1 vrif2
 beq $t1 0 vrif2
 la $a0 msg6
 jal affichemsg
 b base
#------------debut de traitment sur le nbre--
trait2:
 la $t0 nbre
 li $t6 1
fin2:
 lb $t1 ($t0)
 beqz $t1 ffin2
 beq $t6 8 ffin22
 addu $t0 $t0 1
 add $t6 $t6 1
 b fin2
ffin22:
 add $t0 $t0 2
ffin2:
 subu $t0 $t0 2
baseres: 
 la $a0 msg7
 jal affichemsg
 jal lecturenbre
 beq $v0 10 to10
 beq $v0 16 to16
 la $a0 msg5
 jal affichemsg
 b baseres
#-----------base 10 comme base de resultat---
to10:
 la $s3 nbre
 move $s4 $s3
 jal convert2to10 
 la $a0 msg8
 jal affichemsg
 move $a0 $t9
 jal affichenbre
 b exit
#----------base 16 comme base de resultat---
to16:
 la $s3 nbre
 jal convert2to16
 la $a0 msg8
 jal affichemsg
 la $a0 res 
 jal affichemsg
 b exit
#*****************************************************
#----------base 10 comme base de depart------------ 
base10:
 sub $a0 $a0 1
 li $t1 0
#-------------verification de nbre-----------------
taille10:
 add $a0 $a0 1
 add $t1 $t1 1
 beq $t1 9 fintaille10   #on a besoi que  de 8 chiffres
 lb $a1 ($a0)
 beqz $a1 fintaille10
 beq $a1 10 fintaille10  #10=code \n
 beq $a1 46 taille11     #46=code . vergule
 
 sub $a1 $a1 48          #pour le vrai nbre
 bgt $a1 -1 taille10    
 blt $a1 10 taille10
 la $a0 msg6
 jal affichemsg
 b base
taille11:
 move $t8 $t1
 li $t7 1
 b taille10
fintaille10:
 bne $t7 1 nonvergule
 move $t1 $t8
nonvergule:
 la $a0 nbre
 li $s7 0
 sub $t1 $t1 2
lm:
 lb $a1 ($a0)
 beq $a1 46 flm
 sub $a1 $a1 48
 beq $t1 -1 flm
 move $s1 $t1
 jal puissance
 sub $t1 $t1 1
 add $a0 $a0 1
 mul $t5 $a1 $t6
 add $s7 $s7 $t5
 b lm
flm: 
 move $s0 $s7
baseres10: 
 la $a0 msg7
 jal affichemsg
 jal lecturenbre
 beq $v0 2 to102
 beq $v0 16 to1016
 la $a0 msg5
 jal affichemsg
 b baseres10 
#------------base 2 comme la base de resultat------- 
to102:
 jal convert10to2
 la $a0 msg8
 jal affichemsg
 la $a0 res
 jal affichemsg
 b exit
#-----------base 16 comme la base de resultat-------
to1016: 
 jal convert10to2
 la $s3 res
 sub $t0 $a1 1
 jal convert2to16
 la $a0 msg8
 jal affichemsg
 la $a0 res
 jal affichemsg
 b exit
#***************************************************
#----------base 16 comme base de depart------------
base16:
#----------vrification de nbre---------------------
 sub $a1 $a1 1
verif16:
 lb $s0 ($a0) 
 beqz $s0 baseres16
 beq $s0 10 baseres16
 blt $s0 48 nonvalide
 bgt $s0 70 nonvalide
 add $a0 $a0 1
 sub $a1 $a1 1
 bne $a1 1 verif16
baseres16: 
 la $a0 msg7
 jal affichemsg
 jal lecturenbre
 beq $v0 2 to162
 beq $v0 10 to1610
 la $a0 msg5
 jal affichemsg
 b baseres16  
nonvalide:
 la $a0 msg6
 jal affichemsg
 b base 
#-----------base 2 comme la base de resultat------
to162:
 la $t0 nbre
 jal convert16to2
 la $a0 msg8
 jal affichemsg
 la $a0 res 
 jal affichemsg
 b exit
#---------base 10 comme la base de resultat------ 
to1610: 
 la $t0 nbre 
 jal convert16to2
 la $a0 res 
dd:
 lb $a1 ($a0)
 beqz $a1 fdd
 add $a0 $a0 1
 b dd
fdd:
 la $s4 res
 sub $t0 $a0 1
 jal convert2to10
 la $a0 msg8
 jal affichemsg
 move $a0 $t9
 jal affichenbre
#***************************************************
exit:
 li $ra 0
 li $v0 10
 syscall
#***************************************************
convert16to2:
  la $s1 res
  la $t1 nbre 
  li $t2 1     
 bv:
  lb $t3 ($t1)
  beq $t3 10 fbv1
  beq $t2 8 fbv0
  add $t2 $t2 1
  add $t1 $t1 1
  b bv
 fbv1:
  sub $t2 $t2 1
 fbv0:
  la $t1 nbre
  add $t1 $t1 $t2

 convchar1:
  beq $t1 $t0 fintrai
  lb $a1 ($t0)   
  add $t0 $t0 1
  bgt $a1 57 convchar2
  sub $a1 $a1 48  
  j eclate

 convchar2:
  sub $a1 $a1 55 
 eclate:
  li $t3,4            
 retour:
  beq $t3,0,convchar1
  and $t2,$a1,8
  bnez $t2,bit1
 bit0:   
  li $a0 48
  sb $a0 ($s1)
  add $s1 $s1 1 
  sll $a1 $a1 1
  sub $t3 $t3 1
  j retour 
 bit1:
  li $a0 49
  sb $a0 ($s1)
  add $s1 $s1 1 
  sll $a1 $a1 1
  sub $t3 $t3 1
  j retour   
 fintrai:
  li $a0 0
  sb $a0 ($s1)
  j $ra
#***************************************************
convert2to16:
  move $s7 $sp
  li $s2 2
 booo:
  li $t5 1
  move $s5 $t0
 tr:
  beq $t5 4 fff 
  beq $s5 $s3 fff
  sub $s5 $s5 1
  add $t5 $t5 1
  b tr
 fff:
  move $s4 $s5
  sub $sp $sp 4
  sw $ra 0($sp)
  jal convert2to10
  lw $ra 0($sp)
  add $sp $sp 4
  bgt $t9 9 fd
  add $t9 $t9 48 
 ss:
  sub $sp $sp 4
  sw $t9 ($sp)
  beq $s5 $s3 sort
  sub $t0 $s5 1
  b booo
 fd:
  beq $t9 10 A
  beq $t9 11 B 
  beq $t9 12 C
  beq $t9 13 D
  beq $t9 14 E
  beq $t9 15 F
  b sort
 A:li $t9 65
   b ss
 B:li $t9 66
   b ss
 C:li $t9 67
   b ss
 D:li $t9 68
   b ss
 E:li $t9 69
   b ss
 F:li $t9 70
   b ss
 sort:
  la $a0 res
 zz:
  lw $t9 ($sp)
  sb $t9 ($a0)
  add $a0 $a0 1
  add $sp $sp 4
  bgt $s7 $sp zz
  li $t7 0
  sb $t7 ($a0)
  j $ra
#***************************************************
convert10to2:
  move $s2 $sp
 trait10:
  rem $s1 $s0 2
  sub $sp $sp 4
  sw $s1 0($sp)
  div $s0 $s0 2
  bgt $s0 0 trait10
  la $a1 res
 loope:
  lw $a0 0($sp)
  add $sp $sp 4
  add $a0 $a0 48
  sb $a0 ($a1)
  add $a1 $a1 1
  bgt $s2 $sp loope
  li $a0 0
  sb $a0 ($a1)
  j $ra
#***************************************************
convert2to10:
  li $t5 0
  li $t9 0
 loop2:
  li $t6 1
  lb $t7 ($t0)
  sub $t7 $t7 48
  beq $t7 0 suiv
  rol $t6 $t6 $t5
  add $t9 $t9 $t6
 suiv:
  add $t5 $t5 1
  beq $t0 $s4 fi
  sub $t0 $t0 1
  b loop2
 fi:
  j $ra
#****************************************************
puissance:
  li $s2 10
  li $t6 1
 pui: 
  sub $s1 $s1 1
  blt $s1 0 finpui
  mul $t6 $t6 $s2
  b pui
 finpui:
  j $ra
#****************************************************
affichemsg:
 li $v0 4
 syscall
 j $ra 
lecturenbre:
 li $v0 5
 syscall
 j $ra
affichenbre:
 li $v0 1
 syscall
 j $ra
lecturemsg:
 la $a0 nbre
 li $a1 9
 li $v0 8
 syscall
 j $ra
#****************************************************
.data
msg1:.asciiz "\n------tp d'Architecture ---------"
msg2:.asciiz "\nEntree la base de depart: "
msg3:.asciiz "\nEntree le nbre: "
msg4:.asciiz "Entree la base d'arrivee: "
msg5:.asciiz "-----Base erronee--------------"
msg6:.asciiz "\n-----Le nbre est erronee-------"
msg7:.asciiz "\nEntree la base d'arrivee: " 
msg8:.asciiz "\nDans la nouvelle base le nbre est: "  
nbre:.space 33
res:.space 33
#moto x60k

  • Program Name : ACK
  • Author : NABIL
  • Date : 15/03/2006
  • Time : 22:15:59
  • Description About The Program
  • Location Declarations
ORG $1000 Start At Address 1000 in HEX
  • Main Program
  • ============
START LEA MSG1,A1 MOVE.W #9,D1 MOVE.B #1,D0 TRAP #15 MOVE.B #4,D0 TRAP #15 MOVE.W D1,D3
  • -------------------------
LEA MSG2,A1 MOVE.W #9,D1 MOVE.B #1,D0 TRAP #15 MOVE.B #4,D0 TRAP #15 MOVE.W D1,D2
  • -------------------------
BSR ACK LEA MSG3,A1 MOVE.W #5,D1 MOVE.B #1,D0 TRAP #15 MOVE.W RACK,D1 MOVE.B #3,D0 TRAP #15 STOP #$2700 Stop the program
  • ----------------------------
ACK CMP.W #0,D3 BEQ FIN CMP.W #0,D2 BEQ TRAI
  • ========================
MOVE.W D2,-(A7) MOVE.W D3,-(A7) SUB.W #1,D2 BSR ACK MOVE.W (A7)+,D3 MOVE.W (A7)+,D2
  • -----------------------
MOVE.W D4,D2 SUB.W #1,D3 MOVE.W D2,-(A7) MOVE.W D3,-(A7) BSR ACK MOVE.W (A7)+,D3 MOVE.W (A7)+,D2 RTS
  • ========================
TRAI: MOVE.W D3,-(A7) SUB.W #1,D3 MOVE.W #1,D2 BSR ACK MOVE.W (A7)+,D3 MOVE.W #1,D2 RTS
  • ========================
FIN: MOVE.W D2,D4 ADD.W #1,D4 MOVE.W D4,RACK RTS
  • ----------------------------
MSG1 DC.B 'ENTREE M=' MSG2 DC.B 'ENTREE N=' MSG3 DC.B 'ACK =' RACK DS.W 1 END $1000 End of assembly
  • Program Name : NOMBRE
  • Author : NABIL
  • Date : 18/03/2006
  • Time : 22:27:32
  • Description About The Program
  • Location Declarations
ORG $1000 Start At Address 1000 in HEX
  • Main Program
  • ============
START LEA MSG,A1 MOVE.W #65,D1 MOVE.B #0,D0 TRAP #15 LEA BASEED,A1 MOVE.W #25,D1 MOVE.B #1,D0 TRAP #15 MOVE.B #4,D0 TRAP #15 MOVE.W D1,D2 LEA BASEEA,A1 MOVE.W #27,D1 MOVE.B #1,D0 TRAP #15 MOVE.B #4,D0 TRAP #15 MOVE.W D1,D3 LEA NBRE,A1 MOVE.W #16,D1 MOVE.B #1,D0 TRAP #15 CMP.W #2,D2 BEQ BIN CMP.W #10,D2 BEQ DEC CMP.W #16,D2 BEQ HEX BRA ERREUR
  • ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
BIN: CMP.W #16,D3 BEQ BINHEX CMP.W #10,D3 BEQ BINDEC BRA ERREUR DEC: CMP.W #2,D3 BEQ DECBIN CMP.W #16,D3 BEQ DECHEX BRA ERREUR HEX: CMP.W #10,D3 BEQ HEXDEC CMP.W #2,D3 BEQ HEXBIN BRA ERREUR
  • ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
BINDEC: BSR LECTMSG LEA IN,A1 BSR BIN2DEC CMP.W #0,D3 BEQ ERREURN MOVE.W D1,D5 LEA RES,A1 MOVE.W #28,D1 MOVE.B #1,D0 TRAP #15 MOVE.W D5,D1 MOVE.B #3,D0 TRAP #15 BSR SAUT BRA FIN
  • --------------------------------------------------------------------------------
BINHEX: BSR LECTMSG LEA IN,A1 BSR BIN2DEC CMP.W #0,D3 BEQ ERREURN MOVE.W D1,D2 LEA HEXOUT,A2 BSR DEC22HEX LEA RES,A1 MOVE.W #28,D1 MOVE.B #1,D0 TRAP #15 LEA HEXOUT,A1 MOVE.W #8,D1 MOVE.B #0,D0 TRAP #15 BRA FIN
  • ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DECBIN: BSR LECTMSG LEA IN,A1 BSR STR2DEC CMP.W #0,D3 BEQ ERREURN MOVE.L D1,D3 LEA BINOUT,A1 BSR DEC2BIN LEA RES,A1 MOVE.W #28,D1 MOVE.B #1,D0 TRAP #15 LEA BINOUT,A1 MOVE.W #32,D1 MOVE.B #0,D0 TRAP #15 BRA FIN
  • -------------------------------------------------------------------------------
DECHEX: BSR LECTMSG LEA IN,A1 BSR STR2DEC CMP.W #0,D3 BEQ ERREURN MOVE.L D1,D2 LEA HEXOUT,A2 BSR DEC2HEX LEA RES,A1 MOVE.W #28,D1 MOVE.B #1,D0 TRAP #15 LEA HEXOUT,A1 MOVE.W #8,D1 MOVE.B #0,D0 TRAP #15 BRA FIN
  • ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
HEXBIN: BSR LECTMSG LEA IN,A1 BSR HEX2DEC CMP.W #0,D3 BEQ ERREURN MOVE.L D1,D3 LEA BINOUT,A1 BSR DEC2BIN LEA RES,A1 MOVE.W #28,D1 MOVE.B #1,D0 TRAP #15 LEA BINOUT,A1 MOVE.W #32,D1 MOVE.B #0,D0 TRAP #15 BRA FIN
  • --------------------------------------------------------------------------------
HEXDEC: BSR LECTMSG LEA IN,A1 BSR HEX2DEC CMP.W #0,D3 BEQ ERREURN MOVE.L D1,D3 LEA RES,A1 MOVE.W #28,D1 MOVE.B #1,D0 TRAP #15 MOVE.L D3,D1 MOVE.B #3,D0 TRAP #15 BSR SAUT BRA FIN
  • +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ERREUR: LEA ERREURRB,A1 MOVE.W #72,D1 MOVE.B #0,D0 TRAP #15 BRA FIN
  • +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ERREURN: LEA ERREURRN,A1 MOVE.W #45,D1 MOVE.B #0,D0 TRAP #15 FIN:
  • +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
STOP #$2700 Stop the program
  • +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SAUT LEA SSAUT,A1 MOVE.W #1,D1 MOVE.B #0,D0 TRAP #15 RTS
  • ######################LECTURE D"UNE CHAINE DE CARACTERES#########################
LECTMSG MOVE.W #0,D4 LEA IN,A1 LECT3: CMP.W #8,D4 BEQ FINLEC3 MOVE.B #5,D0 TRAP #15 CMP.B #13,D1 BEQ FINLEC3 MOVE.B D1,(A1)+ ADD.W #1,D4 BRA LECT3 FINLEC3: MOVE.W D4,LANG RTS
  • ###################BASE BINAIRE VERT DECIMAL OU HEXADECIMAL#######################
BIN2DEC MOVE.W #0,D1 MOVE.W LANG,D2 SUB.W #1,D2 BOUCLE: MOVE.B (A1)+,D6 EXT.W D6 SUB.W #48,D6 CMP.W #0,D6 BLT ERR CMP.W #1,D6 BGT ERR MOVE.W D6,D4 ASL.W D2,D4 ADD.W D4,D1 SUB.W #1,D2 CMP.W #0,D2 BGT BOUCLE BEQ BOUCLE MOVE.W #1,D3 RTS ERR: MOVE.W #0,D3 RTS
  • -----------------------------------------------------------------------------------
DEC22HEX MOVE.W #0,(A4) MOVEA A7,A3 BOUCLE62: MOVE.W D2,D4 ASR.W #4,D4 MOVE.W D4,D6 ASL.W #4,D6 MOVE.W D2,D0 SUB.W D6,D0 CMP.W #9,D0 BGT HEXA22 ADD.B #48,D0 BRA NORMAL22 HEXA22: ADD.B #55,D0 NORMAL22: ADD.W #1,(A4) MOVE.B D0,-(A7) MOVE.W D4,D2 CMP.W #0,D2 BNE BOUCLE62 BOUCLE72: CMP.W #8,(A4) BEQ FIFIF2 MOVE.B #48,-(A7) ADD.W #1,(A4) BRA BOUCLE72 FIFIF2: MOVE.B (A7)+,(A2)+ CMPA A7,A3 BEQ FIF2 BRA FIFIF2 FIF2: RTS
  • ##################BASE DECIMAL VERT BINAIRE OU HEXADECIMAL########################
STR2DEC MOVE.L #0,D1 MOVE.W LANG,D6 BOUCLE3: MOVE.B (A1)+,D3 SUB.B #48,D3 CMP.B #0,D3 BLT ERREUR3 CMP.B #9,D3 BGT ERREUR3 MOVE.B D3,D4 EXT.L D4 MULU #10,D1 ADD.L D4,D1 SUB.W #1,D6 CMP.W #0,D6 BEQ FF BRA BOUCLE3 FF: MOVE.W #1,D3 RTS ERREUR3: MOVE.W #0,D3 RTS
  • -----------------------------------------------------------------------------------
DEC2BIN MOVEA A7,A2 MOVE.W #0,(A3) BOUCLE4: MOVE.L D3,D1 ASR.L #1,D1 MOVE.L D1,D5 ASL.L #1,D5 MOVE.L D3,D4 SUB.L D5,D4 ADD.B #48,D4 MOVE.B D4,-(A7) ADD.W #1,(A3) MOVE.L D1,D3 CMP.L #0,D3 BNE BOUCLE4 BOUCLE5: CMP.W #32,(A3) BEQ FIFIF1 MOVE.B #48,-(A7) ADD.W #1,(A3) BRA BOUCLE5 FIFIF1: MOVE.B (A7)+,(A1)+ CMPA A7,A2 BEQ FIF1 BRA FIFIF1 FIF1: RTS
  • ----------------------------------------------------------------------------------
DEC2HEX MOVE.W #0,(A4) MOVEA A7,A3 BOUCLE6: MOVE.L D2,D4 ASR.L #4,D4 MOVE.L D4,D6 ASL.L #4,D6 MOVE.L D2,D0 SUB.L D6,D0 CMP.L #9,D0 BGT HEXA2 ADD.B #48,D0 BRA NORMAL2 HEXA2: ADD.B #55,D0 NORMAL2: ADD.W #1,(A4) MOVE.B D0,-(A7) MOVE.L D4,D2 CMP.L #0,D2 BNE BOUCLE6 BOUCLE7: CMP.W #8,(A4) BEQ FIFIF MOVE.B #48,-(A7) ADD.W #1,(A4) BRA BOUCLE7 FIFIF: MOVE.B (A7)+,(A2)+ CMPA A7,A3 BEQ FIF BRA FIFIF FIF: RTS
  • ###############BASE HEXADECIMAL VERT BINAIRE OU DECIMAL ###########################
HEX2DEC MOVE.L #0,D1 MOVE.W #8,D0 SUB.W LANG,D0 MULU #4,D0 MOVE.W #28,D5 SUB.W D0,D5 BOUCLE2: MOVE.B (A1)+,D2 SUB.B #48,D2 EXT.L D2 CMP.L #0,D2 BLT ERRU CMP.L #9,D2 BGT HEXQ BRA NORMALL HEXQ: SUB.L #7,D2 CMP.L #10,D2 BLT ERRU CMP.L #15,D2 BGT ERRU NORMALL: MOVE.L D2,D3 ASL.L D5,D3 ADD.L D3,D1 SUB.W #4,D5 CMP.W #0,D5 BGE BOUCLE2 MOVE.W #1,D3 RTS ERRU: MOVE.W #0,D3 RTS
  • ####################################################################################
IN DC.B ' ' ;8 DECOUT DC.B ' ' ;10 HEXOUT DC.B ' ' ;8 BINOUT DC.B ' ' ;32 MSG DC.B '---------TP N1 ARCHITECTURE II:REPRESENTATION DES NBRE-----------' ;46 BASEED DC.B 'ENTREE LA BASE DE DEPART:' ;25 BASEEA DC.B 'ENTREE LA BASE DE RESULTAT:' ;27 NBRE DC.B 'ENTREE LE NBRE :' ;16 RES DC.B 'LA CONVERTION DE NBRE DONNE:' ;28 ERREURRB DC.B 'VOUS AVEZ CHOISI UNE DASE ERRONNE,OU LA BASE DE DEPART=CELLE DE RESULTAT' ;72 ERREURRN DC.B 'LE NBRE QUE VOUS AVEZ CHOISI N"EST PAS VALIDE' ;45 SSAUT DC.B ' ' LANG DS.W 1
  • ----------------------------------------------------------------
END $1000 End of assembly
  • Program Name : RACINE
  • Author : NABIL
  • Date : 13/03/2006
  • Time : 17:26:56
  • Description About The Program
  • Location Declarations
ORG $1000 Start At Address 1000 in HEX
  • Main Program
  • ============
START LEA MSG1,A1 MOVE.W #9,D1 MOVE.B #1,D0 TRAP #15
  • -------------------------------------------------------------
MOVE.B #4,D0 TRAP #15 MOVE.L D1,NN ;LECTURE DE NBRE N MOVE.L #1,D2
  • -------------------------------------------------------------
BSR DOMAINE MOVE.L D2,NBRE1 ;LE RESULTAT DANS D2=X0 MOVE.L #0,SIMEN1 CMP.L #1,D1 BEQ FINTRAIT
  • --------------------------------------------------------------
TRAIT: MOVE.L NBRE1,NBRE2 MOVE.L SIMEN1,SIMEN2 BSR MULTFL ;CALCULE DE X*X
  • --------------------------------------------------------------
MOVE.L REST,D3 MOVE.L RSIM,D4 MOVE.L NN,D5 SUB.L D6,D6 BSR SUSTRAFL ;CALCULE DE F_X=(X*X)-N MOVE.L REST,F_XRES MOVE.L RSIM,F_XSIM
  • ---------------------------------------------------------------
MOVE.L #2,NBRE2 MOVE.L #0,SIMEN2 BSR MULTFL ;CALCULE DE 2*X
  • ---------------------------------------------------------------
MOVE.L REST,F__XRES MOVE.L RSIM,F__XSIM ;ON A F__X=2*X
  • ----------------------------------------------------------------
MOVE.L F_XRES,D3 MOVE.L F_XSIM,D4 MOVE.L F__XRES,D5 MOVE.L F__XSIM,D6 BSR DIVISIONFL ;CALCULE DE RAPORT=F_X/F__X MOVE.L REST,RAPORT_RES MOVE.L RSIM,RAPORT_SIM
  • -----------------------------------------------------------------
MOVE.L RAPORT_RES,D5 MOVE.L RAPORT_SIM,D6 MOVE.L NBRE1,D3 MOVE.L SIMEN1,D4 BSR SUSTRAFL ;ON A X DANS LA NEW ETAT MOVE.L REST,NBRE2 MOVE.L RSIM,SIMEN2
  • ------------------------------------------------------------------
FINTRAIT: MOVE.L NBRE1,D1 MOVE.B #3,D0 TRAP #15 LEA VERG,A1 MOVE.W #1,D1 MOVE.B #1,D0 TRAP #15 MOVE.L SIMEN1,D6 MOVE.L #1000,D5 AFF: MOVE.L D6,D2 DIVU D5,D2 EXT.L D2 MOVE.L D2,D1 MOVE.B #3,D0 TRAP #15 MULU D5,D2 SUB.L D2,D6 DIVU #10,D5 EXT.L D5 CMP.L #0,D5 BEQ FINP BRA AFF FINP: MOVE.L RAPORT_SIM,D2 CMP.L #100,D2 BLE FINPGM TER: MOVE.B #0,D0 MOVE.W #0,D1 TRAP #15
  • ---------------------------------------------------------------
MOVE.L NBRE2,NBRE1 MOVE.L SIMEN2,SIMEN1 SUB.L D1,D1 BRA TRAIT
  • ---------------------------------------------------------------
FINPGM: MOVE.B #0,D0 MOVE.W #0,D1 TRAP #15 LEA FMSG,A1 MOVE.W #17,D1 MOVE.B #0,D0 TRAP #15
  • ---------------------------------------------------------------
STOP #$2700 Stop the program
  • ----------------------------------------------------------------
DOMAINE LOOP1: MOVE.L D2,D3 MULS D2,D3 SUB.L D1,D3 CMP #0,D3 BGT FLOOP1 BEQ FLOOPE ADD.L #1,D2 BRA LOOP1 FLOOP1: RTS FLOOPE: MOVE.L #1,D1 RTS
  • ----------------------------------------------------------------
MULTFL MOVE.L NBRE1,D3 MOVE.L SIMEN1,D4 MOVE.L NBRE2,D5 MOVE.L SIMEN2,D6 MOVE.L D3,D1 MULU D5,D1 MULU D6,D3 MULU D4,D5 ADD.L D5,D3 MULU D6,D4 DIVU #10000,D4 EXT.L D4 ADD.L D4,D3 MOVE.L D3,D6 DIVU #10000,D3 EXT.L D3 ADD.L D3,D1 MOVE.L D1,REST MOVE.L D3,D2 ;POUR SAVOIRE LA SIMENTIQUE MULU #10000,D2 SUB.L D2,D6 MOVE.L D6,RSIM RTS
  • -----------------------------------------------------------------
SUSTRAFL CMP.L D6,D4 BLT INF SUB.L D5,D3 MOVE.L D3,REST SUB.L D6,D4 MOVE.L D4,RSIM RTS INF: SUB.L D5,D3 SUB.L #1,D3 MOVE.L D3,REST SUB.L D4,D6 MOVE.L #10000,D1 SUB.L D6,D1 MOVE.L D1,RSIM RTS
  • ------------------------------------------------------------------
ADDITIONFL ADD.L D3,D5 ADD.L D4,D6 MOVE.L D6,D2 DIVU #10000,D2 EXT.L D2 ADD.L D2,D5 MOVE.L D5,REST MULU #10000,D2 SUB.L D2,D6 MOVE.L D6,RSIM RTS
  • -------------------------------------------------------------------
DIVISIONFL MULU #1000,D3 ADD.L D4,D3 MOVE.L D3,NB1 MOVE.L D3,D1 MULU #1000,D5 ADD.L D6,D5 MOVE.L D5,NB2 DIVU D5,D3 EXT.L D3 MOVE.L D3,REST MULU D5,D3 SUB.L D3,D1 MULU #10,D1 MOVE.L D1,RSIM MOVE.L D1,D2 CMP.L #0,D2 BEQ FIND MOVE.W #3,D5 CLR.L D4 LOOP2: MOVE.L NB2,D1 CMP.W #0,D5 BEQ FIND MULU #10,D2 MOVE.L D2,NB1 DIVU D1,D2 EXT.L D2 MULU #10,D4 ADD.L D2,D4 MULU D2,D1 MOVE.L NB1,D2 SUB.L D1,D2 SUB.W #1,D5 BRA LOOP2 FIND: MOVE.L D4,RSIM RTS
  • ------------------------------------------------------------------
MSG1 DC.B 'ENTREE N=' FMSG DC.B '--------FIN------' VERG DC.B '.' NBRE1 DS.L 1 SIMEN1 DS.L 1 NBRE2 DS.L 1 SIMEN2 DS.L 1 REST DS.L 1 RSIM DS.L 1 NB1 DS.L 1 NB2 DS.L 1 NN DS.L 1 F_XRES DS.L 1 F_XSIM DS.L 1 F__XRES DS.L 1 F__XSIM DS.L 1 RAPORT_RES DS.L 1 RAPORT_SIM DS.L 1 END $1000 End of assembly #sparc .global akr akr: save %sp,-64,%sp cmp %g0,%g2 bne else nop add %g3,%g1,%g5 ret restore else: cmp %g0,%g1 bne else2 nop sub %g2,%g3,%g2 mov 1,%g1 call akr nop ret restore else2: sub %g1,%g3,%g1 mov %g2,%l2 call akr nop mov %l2,%g2 sub %g2,%g3,%g2 mov %g5,%g1 call akr nop ret restore .global _start _start: sethi str1>>10,%l1 add %l1,str1&0x3FF,%l1 st %l1,[%g0+IODevPrintStrz] mov 3,%l2 st %l2,[%g0+IODevPrintInt] add %l1,str2-str1,%l1 st %l1,[%g0+IODevPrintStrz] mov 1,%l2 st %l2,[%g0+IODevPrintInt] add %l1,str3-str2,%l1 st %l1,[%g0+IODevPrintStrz] mov 1,%g1 mov 4,%g2 mov 1,%g3 call akr nop st %g5,[%g0+IODevPrintInt] .word 0 ! ill instr halt str1: .ascii "Entree la valeur de M=",0 str2: .ascii 10,"Entree la valeur de N=",0 str3: .ascii 10,"Akr=",0 .macro domaine n domaine: mov 1,%g5 loop1: mov %g2,%g3 st %g2,[%g0+IODevMulM1] st %g3,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%g3 sub %g3,n,%g3 cmp %g3,%g0 bg floop1 nop be floop2 nop add %g5,%g2,%g2 ba loop1 nop floop1: ba fin nop floop2: mov 1,n fin: .endm !---------------------------------------------------- mulfl: st %g5,[%g0+IODevMulM1] st %g3,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%l3 st %g6,[%g0+IODevMulM1] st %g3,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%l4 st %g4,[%g0+IODevMulM1] st %g5,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%l5 add %l4,%l5,%l4 st %g4,[%g0+IODevMulM1] st %g6,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%l6 sethi 10000>>10,%l7 !ddddddd add %l7,10000&0x3FF,%l7 st %l7,[%g0+IODevDivDH] st %l6,[%g0+IODevDivDL] st %l7,[%g0+IODevDivDiv] ld [%g0+IODevDivUQ],%l6 add %l6,%l4,%l4 mov %l4,%l6 st %l7,[%g0+IODevDivDH] st %l4,[%g0+IODevDivDL] st %l7,[%g0+IODevDivDiv] ld [%g0+IODevDivUQ],%l4 add %l4,%l3,%l3 mov %l3,%o1 mov %l4,%l5 st %l5,[%g0+IODevMulM1] st %l7,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%l5 sub %l6,%l5,%o2 retl nop !--------------------------------------------------- sustrafl: cmp %g6,%g4 bg inf nop sub %g3,%g5,%o1 sub %g4,%g6,%o2 b end nop inf: sub %g3,%g5,%l3 mov 1,%l6 sub %l3,%l6,%o1 sub %g6,%g4,%l6 sethi 10000>>10,%l5 add %l5,10000&0x3FF,%l5 !ddddddddddd sub %l5,%l6,%o2 end: retl nop !------------------------------------------------- .macro divisionfl res,rest divisionfl: sethi 10000>>10,%l7 add %l7,10000&0x3FF,%l7!ddddddddd st %g3,[%g0+IODevMulM1] st %l7,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%g3 add %g3,%g4,%g3 mov %g3,%l2 mov %g3,%l1 st %g5,[%g0+IODevMulM1] st %l7,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%g5 add %g6,%g5,%g5 mov %g5,%l3 st %g5,[%g0+IODevDivDH] st %g3,[%g0+IODevDivDL] st %g5,[%g0+IODevDivDiv] ld [%g0+IODevDivUQ],%g3 mov %g3,res st %g5,[%g0+IODevMulM1] st %g3,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%g3 sub %l1,%g3,%l1 mov %l1,rest mov %l1,%l4 cmp %g0,%l4 be find nop mov 4,%g5!dddddddddddd sub %g4,%g4,%g4 loop2: mov %l3,%l1 cmp %g0,%g5 be find nop mov 10,%l6 st %l4,[%g0+IODevMulM1] st %l6,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%l4 mov %l4,%l2 st %l1,[%g0+IODevDivDH] st %l4,[%g0+IODevDivDL] st %l1,[%g0+IODevDivDiv] ld [%g0+IODevDivUQ],%l4 st %l6,[%g0+IODevMulM1] st %g4,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%g4 add %l4,%g4,%g4 st %l1,[%g0+IODevMulM1] st %l4,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%l1 mov %l2,%l4 sub %l4,%l1,%l4 sub %g5,1,%g5 b loop2 nop find: mov %g4,rest .endm .global _start _start: sethi str1>>10,%l2 add %l2,str1&0x3FF,%l2 st %l2,[%g0+IODevPrintStrz] mov 3,%l1 st %l1,[%g0+IODevPrintInt] add %l2,str2-str1,%l2 st %l2,[%g0+IODevPrintStrz] mov 2023,%l0 !%l0=nn mov 1,%g2 mov %l0,%g1 domaine %g1 nop mov %g2,%o5 mov 0,%o6 mov 1,%i1 cmp %i1,%g1 be fintrait nop trait: mov %o5,%g3 mov %o6,%g4 mov %g3,%g5 mov %g4,%g6 call mulfl !calcul de x*x nop mov %o1,%g3 mov %o2,%g4 mov %l0,%g5 mov 0,%g6 call sustrafl ! calcul de x*x-nn nop mov %o1,%o3 mov %o2,%o4 mov %o5,%g3 mov %o6,%g4 mov 2,%g5 mov 0,%g6 call mulfl !calcule de 2*x nop mov %o1,%i3 mov %o2,%i4 mov %o3,%g3 mov %o4,%g4 mov %i3,%g5 mov %i4,%g6 divisionfl %o1,%o2 !calcule le rapport nop mov %o1,%i5 mov %o2,%i6 mov %i5,%g5 mov %i6,%g6 mov %o5,%g3 mov %o6,%g4 call sustrafl nop mov %o1,%g3 mov %o2,%g4 mov %g3,%o5 mov %g4,%o6 fintrait: st %g3,[%g0+IODevPrintInt] sethi ver>>10,%l2 add %l2,ver&0x3FF,%l2 st %l2,[%g0+IODevPrintStrz] sethi 1000>>10,%l1 add %l1,1000&0x3Ff,%l1 mov 10,%l2 aff: mov %g4,%g5 st %l1,[%g0+IODevDivDH] st %g4,[%g0+IODevDivDL] st %l1,[%g0+IODevDivDiv] ld [%g0+IODevDivUQ],%g5 st %g5,[%g0+IODevPrintInt] st %g5,[%g0+IODevMulM1] st %l1,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%g5 sub %g4,%g5,%g4 st %l2,[%g0+IODevDivDH] st %l1,[%g0+IODevDivDL] st %l2,[%g0+IODevDivDiv] ld [%g0+IODevDivUQ],%l1 cmp %g0,%l1 be finp nop b aff nop finp: sethi saut>>10,%l3 add %l3,saut&0x3FF,%l3 st %l3,[%g0+IODevPrintStrz] cmp %g0,%i6 be finpgm nop b trait nop finpgm: .word 0 ! ill instr halt str1: .ascii "Entree la valeur de N=",0 str2: .ascii 10,"La Racine =",0 ver: .ascii ",",0 saut: .ascii 10 .global _start !------------------------------------------- print: st %l1,[%g0+IODevPrintStrz] retl nop !------------------------------------------- bin2dec: mov 0,%g3 mov 7,%i1 mov 0,%g6 boucle: ldsb [%g1+%g6],%g4 sub %g4,48,%g4 cmp %g4,0 bl erre nop cmp %g4,1 bg erre nop sll %g4,%i1,%g5 add %g3,%g5,%g3 sub %i1,1,%i1 add %g6,1,%g6 cmp %i1,%g0 bg boucle nop be boucle nop mov 1,%g2 retl nop erre: mov 0,%g2 retl nop !------------------------------------------------ str2dec: mov 0,%g3 mov 10,%l2 mov 0,%g6 sethi 10000000>>10,%o5 add %o5,10000000&0x3FF,%o5 boucle3: ldsb [%g1+%g6],%g4 sub %g4,48,%g4 cmp %g4,0 bl erre3 nop cmp %g4,9 bg erre3 nop st %o5,[%g0+IODevMulM1] st %g4,[%g0+IODevMulM2] ld [%g0+IODevMulSPL],%g5 add %g5,%g3,%g3 st %l2,[%g0+IODevDivDH] st %o5,[%g0+IODevDivDL] st %l2,[%g0+IODevDivDiv] ld [%g0+IODevDivUQ],%o5 add %g6,1,%g6 cmp %o5,0 bg boucle3 nop mov 1,%g2 retl nop erre3: mov 0,%g2 retl nop !------------------------------------------------ dec2hex: sethi hexout>>10,%l2 add %l2,hexout&0x3FF,%l2 mov %l2,%l3 add %l2,7,%l2 boucle6: srl %g1,4,%g2 sll %g2,4,%g4 sub %g1,%g4,%l5 cmp %l5,9 bg hexa2 nop add %l5,48,%l5 b normal2 nop hexa2: add %l5,55,%l5 normal2: stb %l5,[%l2] sub %l2,1,%l2 mov %g2,%g1 cmp %g1,0 bg boucle6 nop boucle7: mov 48,%g1 stb %g1,[%l2] sub %l2,1,%l2 cmp %l3,%l2 bl boucle7 nop be boucle7 nop retl nop !------------------------------------------------ dec2bin: sethi binout>>10,%l1 add %l1,binout&0x3FF,%l1 mov %l1,%l2 add %l1,31,%l1 boucle4: srl %g1,1,%l4 sll %l4,1,%l5 sub %g1,%l5,%l3 add %l3,48,%l3 stb %l3,[%l1] sub %l1,1,%l1 mov %l4,%g1 cmp %g1,0 bg boucle4 nop boucle5: mov 48,%g1 stb %g1,[%l1] sub %l1,1,%l1 cmp %l2,%l1 bl boucle5 nop be boucle5 nop retl nop !------------------------------------------------- hex2dec: mov 0,%g3 mov 28,%l2 boucle2: ldsb [%g1],%g4 sub %g4,48,%g4 cmp %g4,0 bl erre2 nop cmp %g4,9 bg hexx nop b normal nop hexx: sub %g4,7,%g4 cmp %g4,10 bl erre2 nop cmp %g4,15 bg erre2 nop normal: sll %g4,%l2,%g5 add %g3,%g5,%g3 sub %l2,4,%l2 add %g1,1,%g1 cmp %l2,0 bg boucle2 nop be boucle2 nop mov 1,%g2 retl nop erre2: mov 0,%g2 retl nop !------------------------------------------------- _start: sethi msg>>10,%l1 add %l1,msg&0x3FF,%l1 call print nop sethi based>>10,%l1 add %l1,based&0x3FF,%l1 call print nop !lecture de la base de depart mov 2,%l6 !base de depart**************** sethi baser>>10,%l1 add %l1,baser&0x3FF,%l1 call print nop !lecture de la base de resultat mov 10,%l7 !base de resultat**************** cmp %l6,2 be bin nop cmp %l6,10 be dec nop cmp %l6,16 be hex nop b erreur nop !*********************************************** bin: cmp %l7,10 be bindec nop cmp %l7,16 be binhex nop b erreur nop !*********************************************** dec: cmp %l7,2 be decbin nop cmp %l7,16 be dechex nop b erreur nop !************************************************ hex: cmp %l7,2 be hexbin nop cmp %l7,10 be hexdec nop b erreur nop !************************************************ binhex: !lecture de nbre qui sera dans in sethi in>>10,%g1 add %g1,in&0x3FF,%g1 call bin2dec nop cmp %g2,%g0 be errnn nop mov %g3,%g1 call dec2hex nop sethi res>>10,%l1 add %l1,res&0x3FF,%l1 call print nop sethi hexout>>10,%l1 add %l1,hexout&0x3FF,%l1 call print nop b fin nop !---------------------------------------- bindec: !lecture de nbre il sera dans in sethi in>>10,%g1 add %g1,in&0x3FF,%g1 call bin2dec nop cmp %g2,%g0 be errnn nop sethi res>>10,%l1 add %l1,res&0x3FF,%l1 call print nop st %g3,[%g0+IODevPrintInt] b fin nop !************************************************* dechex: !lecture de nbre , il sera dans in sethi in>>10,%g1 add %g1,in&0x3FF,%g1 call str2dec nop cmp %g2,%g0 be errnn nop mov %g3,%g1 call dec2hex nop sethi res>>10,%l1 add %l1,res&0x3FF,%l1 call print nop sethi hexout>>10,%l1 add %l1,hexout&0x3FF,%l1 call print nop b fin nop !--------------------------------------------- decbin: !lecture de nbre qui sera dans in sethi in>>10,%g1 add %g1,in&0x3FF,%g1 call str2dec nop cmp %g2,%g0 be errnn nop mov %g3,%g1 call dec2bin nop sethi res>>10,%l1 add %l1,res&0x3FF,%l1 st %l1,[%g0+IODevPrintStrz] sethi binout>>10,%l1 add %l1,binout&0x3FF,%l1 st %l1,[%g0+IODevPrintStrz] b fin nop !************************************************ hexdec: !lecture de nbre qui sera dans in sethi in>>10,%g1 add %g1,in&0x3FF,%g1 call hex2dec nop cmp %g2,%g0 be errnn nop sethi res>>10,%l1 add %l1,res&0x3FF,%l1 call print nop st %g3,[%g0+IODevPrintInt] b fin nop !------------------------------------------------- hexbin: !lecture de nbre qui sera dans in sethi in>>10,%g1 add %g1,in&0x3FF,%g1 call hex2dec nop cmp %g2,%g0 be errnn nop mov %g3,%g1 call dec2bin nop sethi res>>10,%l1 add %l1,res&0x3FF,%l1 call print nop sethi binout>>10,%l1 add %l1,binout&0x3FF,%l1 call print nop b fin nop !------------------------------------------------- errnn: sethi errn>>10,%l1 add %l1,errn&0x3FF,%l1 call print nop b fin nop erreur: sethi errb>>10,%l1 add %l1,errb&0x3FF,%l1 call print nop b fin nop !------------------------------------------------- fin: .word 0 ! ill instr halt in: .ascii "00201110",0 deout: .ascii " ",0 hexout: .ascii " ",0 binout: .ascii " ",0 msg: .ascii "----------Tp n1 de Arichi--------",0 based: .ascii 10,"Entree la base de depart:",0 baser: .ascii 10,"Entree la base de resultat:",0 nombre: .ascii 10,"Entree la nombre:",0 res: .ascii 10,"La conversion donne:",0 errb: .ascii 10,"base erronee.....",0 errn: .ascii 10,"nbre erronee.....",0

Conclusion :


bon chance :-)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.