Skip to content

Instantly share code, notes, and snippets.

@Rastrian
Created October 25, 2021 09:06
Show Gist options
  • Save Rastrian/60b1945606ba2d0d55e5f0390338e4b1 to your computer and use it in GitHub Desktop.
Save Rastrian/60b1945606ba2d0d55e5f0390338e4b1 to your computer and use it in GitHub Desktop.
TODO: Change MOV, CMP and JNG unused by Ahmes simulator.
ORG 0
init:
LDA num_zero
STA result_more_sb ; MORE SB DIGIT (MMC)
STA result_less_sb ;LESS SB DIGIT (MMC)
STA mmc_more_sb ;MMC - TEMP MORE SB DIGIT
STA mmc_less_sb ;MMC - TEMP LESS SB DIGIT
ORG 128
declare:
op_A: DB 112 ; ADRESS>128
op_B: DB 0 ; ADDRESS>129
result_more_sb: DW ; ADDRESS>130
result_less_sb: DW ; ADDRESS>131
num_zero: DB 0 ; ADDRESS>132
mmc_more_sb: DW ; ADDRESS>133
mmc_less_sb: DW ; ADDRESS>134
opcode: DB ; ADDRESS>135
num_one: DB 1 ; Invalid Opcode
ORG 18
call_ops:
LDA opcode;
SUB num_one;
JZ A_equals_zero
ORG 57
A_equals_zero:
LDA op_A;
CMP op_A, [num_zero];
JZ B_equals_zero;
MOV result_more_sb, [num_zero];
MOV result_less_sb, [num_zero];
JMP 255;
ORG 71
B_equals_zero:
LDA op_B;
CMP op_B, [num_zero];
JZ A_more_than_B;
MOV result_more_sb, [num_zero];
MOV result_less_sb, [num_zero];
JMP 254;
ORG 81
A_more_than_B:
CMP op_A, [op_B];
JNG else_conditional;
MOV mmc_more_sb, [op_A];
MOV mmc_less_sb, [op_B];
JMP continue_function;
ORG 91
else_conditional:
MOV mmc_more_sb, [op_B];
MOV mmc_less_sb, [op_A];
JMP continue_function;
ORG 116
continue_function:
MOV result_more_sb, [mmc_more_sb];
MOV result_less_sb, [mmc_less_sb];
JMP end
ORG 251
end:
HLT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment