On the Subject of Assembly Code

Why are registers important, when you are already modifying them!

On the module, there are 3 displays. The left display will have 8 “codes”, the top display will have a description of what a “code” does, and the right display tells you the position of the list you are in.

The list on the left of the module is index-0.

To solve the module, multiply the number of AA batteries by 2 and add 1. Modulo 8 and add 1 again. If there is any Lines of code, Scripting, or Brainf---, the number is 0. This number is the “code” you are going to solve for in each stage, where the “code” is the 3–5 letter word on the left of the module and the 2nd column in the list below.

Refer to the list below to get the description. You can also use the 2 buttons to cycle through the descriptions on the top of the module.

After you find the description of the correct code, input it by pressing the description box on top and the next stage will happen. Do this for a total of 3 times to solve the module.

IndexCodeMeaning
0AAAASCII adjust AL after addition
1AADASCII adjust AX before division
2AAMASCII adjust AX after multiplication
3AASASCII adjust AL after subtraction
4ADCAdd with carry
5ADDAdd
6ANDLogical AND
7CALLCall procedure
8CBWConvert byte to word
9CLCClear carry flag
10CLDClear direction flag
11CLIClear interrupt flag
12CMCComplement carry flag
13CMPCompare operands
14CMPSBCompare bytes in memory
15CMPSWCompare words
16CWDConvert word to doubleword
17DAADecimal adjust AL after addition
18DASDecimal adjust AL after subtraction
19DECDecrement by 1
20DIVUnsigned divide
21ESCUsed with floating-point unit
22HLTEnter halt state
23IDIVSigned divide
24IMULSigned multiply
25INInput from port
26INCIncrement by 1
27INTCall to interrupt
28INTOCall to interrupt if overflow
29IRETReturn from interrupt
30JccJump if condition
31JCXZJump if CX is zero
32JMPJump
33LAHFLoad FLAGS into AH register
34LDSLoad pointer using DS
35LEALoad Effective Address
36LESLoad ES with pointer
37LOCKAssert BUS LOCK# signal
38LODSBLoad string byte
39LODSWLoad string word
40LOOPLoop control
41MOVMove
42MOVSBMove byte from string to string
43MOVSWMove word from string to string
44MULUnsigned multiply
45NEGTwo’s complement negation
46NOPNo operation
47NOTNegate the operand, logical NOT
48ORLogical OR
49OUTOutput to port
50POPPop data from stack
51POPFPop FLAGS register from stack
52PUSHPush data onto stack
53PUSHFPush FLAGS onto stack
54RCLRotate left (with carry)
55RCRRotate right (with carry)
56REPxxRepeat MOVS/STOS/CMPS/LODS/SCAS
57RETReturn from procedure
58RETNReturn from near procedure
59RETFReturn from far procedure
60ROLRotate left
61RORRotate right
62SAHFStore AH into FLAGS
63SALShift Arithmetically left (signed shift left)
64SARShift Arithmetically right (signed shift right)
65SBBSubtraction with borrow
66SCASBCompare byte string
67SCASWCompare word string
68SHLShift left (unsigned shift left)
69SHRShift right (unsigned shift right)
70STCSet carry flag
71STDSet direction flag
72STISet interrupt flag
73STOSBStore byte in string
74STOSWStore word in string
75SUBSubtraction
76TESTLogical compare (AND)
77WAITWait until not busy
78XCHGExchange data
79XLATTable look-up translation
80XORExclusive OR