J'ai mis ici les algos LMC de [Exemple de Programmes] et des demo 5-6-7. Vous pouvez copier (copy & paste) les algos en Language Machine et les faire fonctioner dans l'Applet Java du simulateur de LMC donne sur la page Web du cours; soit celle de Petter Higginson ou soit celle de 101computing. Dans les deux applets il faut remplacer: IN par INP BR par BRA BZ par BRZ BP par BRP STO par STA COB par HLT ATTENTION : l'instruction STA (telle qu'elle a ete definie dans le cours) n'EXISTE PAS dans ces deux applets (ni les instructions MUL ET DIV) ! L'instruction STA, dans ces deux applets, est l'instruction STO vu en cours. Je ne met ici que les algos qui n'utilise pas STA (telle que nous l'avons definit en cours), ni DIV,ni MULT et je remplace STO par STA, IN par INP, etc. (cf. plus haut) ======================== ======================== LMC Exemple de Programme ======================== ======================== ==== 6.6 ==== LDA C1 STO INDEX STO SUM L1 OUT LDA INDEX ADD C2 STO INDEX SUB C40 BRP END LDA SUM ADD INDEX STO SUM BR L1 END HLT C1 DAT 1 C2 DAT 2 C40 DAT 40 INDEX DAT 0 SUM DAT 0 ==== 6.7 ==== #LMC program that accepts an indefinite number of input #values. The output value will be the largest of the #input values. Zero is used as a flag to indicate the end #of input. INP STA LARGEST LOOP INP BRZ END STA TEMP SUB LARGEST BRP L1 BRA LOOP L1 LDA TEMP STA LARGEST BRA LOOP END LDA LARGEST OUT HLT LARGEST DAT 0 TEMP DAT 0 ==== 6.9 ==== #Add a column of input values and produce the sum as #output. The first input value - the number of values #that follow as input to be added. LDA ZERO STA SUM INP STA COUNT NEXT INP ADD SUM STA SUM LDA COUNT SUB ONE STA COUNT BRZ END BRA NEXT END LDA SUM OUT HLT ZERO DAT 0 ONE DAT 1 SUM DAT 0 COUNT DAT 0 ==== 6.10 ==== LDA C1 L1 OUT ADD C2 STA TEMP SUB C100 BRP END LDA TEMP BRA L1 END HLT C1 DAT 1 C2 DAT 2 C100 DAT 100 TEMP DAT 0 ==== 6.11 ==== LDA one STA INDEX STA SUM L1 OUT LDA INDEX ADD two STA INDEX SUB forty BRP END LDA SUM ADD INDEX STO SUM BRA L1 END HLT one DAT 1 two DAT 2 forty DAT 40 INDEX DAT 0 SUM DAT 0 ==== 6.12 ==== #Find the largest of 3 numbers INP STA N1 INP STA N2 INP STA N3 SUB N2 BRP L1 LDA N2 BRA L2 L1 LDA N3 L2 STA LN SUB N1 BRP L3 LDA N1 BRA L4 L3 LDA LN L4 OUT HLT N1 DAT 0 N2 DAT 0 N3 DAT 0 LN DAT 0 ======================== ======== Demo 5 ======== ======================== ==== 6.6 ==== INP STA a INP STA b SUB a BRP cont LDA a STA b cont INP STA a SUB b BRP fin LDA b STA a fin LDA a OUT HLT a DAT 0 b DAT 0 ==== 6.10 ==== LDA i OUT loop LDA i ADD c2 STA i OUT SUB c99 BRZ fin BRA loop fin HLT i DAT 1 c2 DAT 2 c99 DAT 99 ==== 6.11 ==== LDA sum OUT loop LDA int ADD c2 STA int ADD sum STA sum OUT LDA int SUB c39 BRP fin BRA loop fin HLY sum DAT 01 int DAT 01 c2 DAT 02 c39 DAT 39 ======================== ======== Demo 6 ======== ======================== ==== 6.7 ==== INP STA 99 INP BRZ 11 STA 98 SUB 98 BRA 02 LDA 98 STA 99 BRA 02 LDA 99 OUT HLT ==== 6.8 ==== INP STA 99 INP STA 98 SUB 99 BRP 12 LDA 99 STA 96 LDA 98 STA 99 LDA 96 STA 98 INP STA 97 SUB 98 BRP 30 LDA 97 STA 96 LDA 98 STA 97 LDA 96 STA 98 SUB 99 BRP 30 LDA 98 STA 96 LDA 99 STA 98 LDA 96 STA 99 LDA 97 OUT LDA 98 OUT HLT ==== 6.9 ==== LDA 90 STA 99 INP STA 98 INP ADD 99 STA 99 LDA 98 SUB 91 BRZ 11 LDA 99 OUT HLT DAT 0 DAT 1