Skip to content

Dictionary

Look up a word. Filter by side, by part of speech or by segment. This dictionary holds 101 A-side words and 99 B-side words: the words we learn first, not the full languages.

SideWordPart of speechSegmentMeaningExample
AMOVVerbKeeping valuesCopy a value from one place to a different place.mov ax, 5
AXCHGVerbKeeping valuesSwap the values in two places.xchg ax, bx
APUSHVerbKeeping valuesPut a value on the top of the stack.push ax
APOPVerbKeeping valuesTake the value from the top of the stack.pop ax
ALEAVerbKeeping valuesCalculate an address and keep the address. It does not read the memory.lea si, [bx+4]
AAXNounKeeping valuesRegister A, the primary work register (16 bits). AH and AL are its two halves.mov ax, 0
ABXNounKeeping valuesRegister B. It often holds a memory address.mov al, [bx]
ACXNounKeeping valuesRegister C, the counter. LOOP and REP count down with it.mov cx, 10
ADXNounKeeping valuesRegister D. It holds the high half of large results, and port numbers.mov dx, 3DAh
ASINounKeeping valuesSource index. It points to the place where data comes from.mov si, map
ADINounKeeping valuesDestination index. It points to the place where data goes.xor di, di
ABPNounKeeping valuesBase pointer. It points into the stack.mov bp, sp
ASPNounKeeping valuesStack pointer. It points to the top of the stack.
ADSNounKeeping valuesData segment. It selects the 64 KB area that holds the data.
AESNounKeeping valuesExtra segment. It selects a second area, for example the screen memory.mov es, ax
ACSNounKeeping valuesCode segment. It selects the area that holds the instructions.
ASSNounKeeping valuesStack segment. It selects the area that holds the stack.
AstackNounKeeping valuesA pile of values in memory. The last value in is the first value out.push ax
A[ ]Grammar markKeeping valuesSquare brackets mean "the value at this address", not the address.mov al, [bx]
ABYTEAdjectiveKeeping valuesSize: 8 bits, one value from 0 to 255.mov byte [bx], 7
AWORDAdjectiveKeeping valuesSize: 16 bits, one value from 0 to 65,535.mov word [score], 0
ADBNote to the translatorKeeping valuesDefine bytes. Put these bytes in the program file.msg db 'Hello$'
ADWNote to the translatorKeeping valuesDefine words. Put these 16-bit numbers in the program file.score dw 0
ARESBNote to the translatorKeeping valuesReserve bytes. Keep this much empty space.buffer resb 64000
AEQUNote to the translatorKeeping valuesGive a name to a number.WIDTH equ 320
AXLATVerbKeeping valuesTable lookup: replace AL with the byte at [BX + AL]. One verb reads one entry of a table.mov bx, speeds xlat
AADDVerbDoing arithmeticAdd a value.add ax, bx
ASUBVerbDoing arithmeticSubtract a value.sub ax, 1
AINCVerbDoing arithmeticAdd 1.inc cx
ADECVerbDoing arithmeticSubtract 1.dec cx
AMULVerbDoing arithmeticMultiply numbers that have no sign. The result goes in DX and AX.mul bx
AIMULVerbDoing arithmeticMultiply numbers that have a sign.imul bx
ADIVVerbDoing arithmeticDivide numbers that have no sign. AX gets the result, DX gets the remainder.div bx
AIDIVVerbDoing arithmeticDivide numbers that have a sign.idiv bx
ANEGVerbDoing arithmeticChange the sign. 5 becomes -5.neg ax
ASHLVerbDoing arithmeticMove the bits left. Each step multiplies by 2.shl ax, 1
ASHRVerbDoing arithmeticMove the bits right. Each step divides by 2 (numbers with no sign).shr ax, 1
ASARVerbDoing arithmeticMove the bits right and keep the sign. Each step divides a signed number by 2.sar ax, 1
AANDVerbDoing arithmeticKeep only the bits that are 1 in the two values.and al, 0Fh
AORVerbDoing arithmeticSet each bit that is 1 in one value or the other.or al, 80h
AXORVerbDoing arithmeticFlip the bits where the two values differ. xor ax, ax sets AX to 0.xor ax, ax
ANOTVerbDoing arithmeticFlip every bit.not al
AADCVerbDoing arithmeticAdd, plus the carry flag. It joins the high bytes of a number that is longer than one register.adc al, 0
ASBBVerbDoing arithmeticSubtract, minus the carry flag (the borrow). The partner of ADC.sbb al, 0
ADAAVerbDoing arithmeticDecimal adjust after an ADD or ADC of two packed decimal bytes in AL. It makes 09h + 1 into 10h and sets CF after 99.add al, 1 daa
ADASVerbDoing arithmeticDecimal adjust after a SUB or SBB of two packed decimal bytes in AL. The partner of DAA.sub al, 1 das
AAAMVerbDoing arithmeticDivide AL by 10. The tens go to AH, the units stay in AL: a ready-made step to show a number under 100.aam
ACBW / CWDVerbDoing arithmeticMake a signed number longer: CBW copies the sign of AL into AH. CWD copies the sign of AX into DX, before IDIV.cwd idiv cx
ACFNounDoing arithmeticCarry flag. It is 1 when a result is too large for its size.
ACMPVerbMaking choices and repeatingCompare two values. It subtracts but keeps only the flags.cmp ax, 10
ATESTVerbMaking choices and repeatingCompare the bits of two values. It does an AND but keeps only the flags.test al, 8
AJMPVerbMaking choices and repeatingGo to a label.jmp game_loop
AJE / JZVerbMaking choices and repeatingGo to a label if the compared values are equal (the zero flag is 1).je no_fuel
AJNE / JNZVerbMaking choices and repeatingGo to a label if the compared values are not equal.jne again
AJL / JGVerbMaking choices and repeatingGo to a label if less / greater (numbers with a sign).jl too_low
AJB / JAVerbMaking choices and repeatingGo to a label if below / above (numbers with no sign).jb too_low
ALOOPVerbMaking choices and repeatingSubtract 1 from CX. If CX is not 0, go to the label.loop again
ACALLVerbMaking choices and repeatingGo to a subroutine and remember the return address.call draw_ship
ARETVerbMaking choices and repeatingReturn to the instruction after the CALL.ret
AZFNounMaking choices and repeatingZero flag. It is 1 when the last result is zero.
ASFNounMaking choices and repeatingSign flag. It is 1 when the last result is negative.
Alabel:Grammar markMaking choices and repeatingA name for a place in the program. A colon ends it.again:
AREPAdverbWorking with many valuesDo the next string verb again, CX times.rep stosb
AMOVSBVerbWorking with many valuesCopy one byte from DS:SI to ES:DI, then move SI and DI to the next byte.rep movsb
AMOVSWVerbWorking with many valuesCopy one word (2 bytes) from DS:SI to ES:DI.rep movsw
ASTOSBVerbWorking with many valuesPut AL at ES:DI, then move DI to the next byte.rep stosb
ASTOSWVerbWorking with many valuesPut AX at ES:DI, then move DI 2 bytes.rep stosw
ALODSBVerbWorking with many valuesLoad the byte at DS:SI into AL, then move SI.lodsb
ACLDVerbWorking with many valuesMake the string verbs move forward (clear the direction flag).cld
ADFNounWorking with many valuesDirection flag. It sets the direction of the string verbs.
AORGNote to the translatorOrganizing a programTell the assembler the start address of the program. A DOS .COM program starts at 100h.org 100h
ABITSNote to the translatorOrganizing a programSelect 16-bit or 32-bit translation.bits 16
ASECTIONNote to the translatorOrganizing a programPut the next lines in a named part of the file, for code or for data.section .data
A%defineNote to the translatorOrganizing a programGive a name to a piece of text.%define SCREEN 0A000h
A%macroNote to the translatorOrganizing a programGive a name to a group of instructions. Then use the name as one word.%macro wait_key 0
A%includeNote to the translatorOrganizing a programRead a different file at this point.%include "vga.inc"
ATIMESNote to the translatorOrganizing a programDo the rest of the line again, a number of times.times 10 db 0
AINCBINNote to the translatorOrganizing a programPut the bytes of a file into the program at this place. This is how the A side reads a table that the B side made.sine_table: incbin "sine.bin"
A;Grammar markOrganizing a programStarts a comment. The assembler ignores the rest of the line.; draw the ship
A,Grammar markOrganizing a programSeparates the destination (first) from the source (second).mov ax, bx
AhGrammar markOrganizing a programAt the end of a number, h marks base 16 (hexadecimal). 10h is 16.mov ax, 13h
AINTVerbShowing text and reading keysCall a service of the BIOS or DOS (a ready-made routine in the computer).int 21h
AINT 21h, AH=09hIdiomShowing text and reading keysDOS: show the text at DS:DX. A $ sign marks the end of the text.mov ah, 09h
AINT 21h, AH=02hIdiomShowing text and reading keysDOS: show one character. The character is in DL.mov ah, 02h
AINT 21h, AH=4ChIdiomShowing text and reading keysDOS: stop the program and return to DOS.mov ax, 4C00h
AINT 16h, AH=00hIdiomShowing text and reading keysBIOS: wait for a key. The BIOS puts the key code in AX.mov ah, 0
AINT 16h, AH=01hIdiomShowing text and reading keysBIOS: tell if a key is ready, without a wait.mov ah, 1
AINT 10h, AX=0013hIdiomShowing text and reading keysBIOS: change the screen to 320 x 200 pixels with 256 colors (Mode 13h).mov ax, 13h
AINT 10h, AX=0003hIdiomShowing text and reading keysBIOS: change the screen to text mode again.mov ax, 3
AINVerbControlling the hardwareRead a value from a hardware port.in al, dx
AOUTVerbControlling the hardwareWrite a value to a hardware port.out dx, al
ACLIVerbControlling the hardwareStop hardware interrupts for a short time.cli
ASTIVerbControlling the hardwareLet hardware interrupts start again.sti
AIRETVerbControlling the hardwareReturn from an interrupt handler.iret
AHLTVerbControlling the hardwareStop the processor until the next interrupt.hlt
AportNounControlling the hardwareA numbered door to a hardware device. The processor talks to devices through ports.in al, 60h
AinterruptNounControlling the hardwareA signal that stops the program for a moment, runs a handler, then lets the program continue.
AA000hNounControlling the hardwareThe segment of the VGA screen memory in Mode 13h. Each byte is one pixel.mov ax, 0A000h
A3DAhNounControlling the hardwareThe VGA status port. Bit 3 is 1 while the screen beam returns to the top (vertical retrace).mov dx, 3DAh
A3C8h / 3C9hNounControlling the hardwareThe VGA palette ports. Select a color number, then write its red, green and blue parts.mov dx, 3C8h
AINT 09hNounControlling the hardwareThe keyboard interrupt. A game replaces its handler to read keys fast.
BINTEGERNounKeeping valuesA whole number, for example -1, 0 or 42.integer :: lives
BREALNounKeeping valuesA number with a decimal point, for example 3.14.real :: speed
BLOGICALNounKeeping valuesA value that is true or false.logical :: landed
BCHARACTERNounKeeping valuesText.character(len=20) :: name
BCOMPLEXNounKeeping valuesA complex number: a real part and an imaginary part.complex :: z
BTYPENounKeeping valuesA new noun that you make from other nouns (a derived type).type :: ship
B::Grammar markKeeping valuesSeparates the description from the names in a declaration.real :: x, y
B=Grammar markKeeping valuesPut the value on the right into the name on the left. It is not the maths "equals".x = x + 1
BPARAMETERAdjectiveKeeping valuesThe value never changes (a constant).real, parameter :: g = 1.62
BDIMENSIONAdjectiveKeeping valuesThis name holds a list or a table of values (an array).real, dimension(100) :: x
BALLOCATABLEAdjectiveKeeping valuesThe program sets the size of this array when it runs.real, allocatable :: x(:)
BPOINTERAdjectiveKeeping valuesThis name points to a different value.real, pointer :: p
BTARGETAdjectiveKeeping valuesA pointer can point to this value.real, target :: t
BSAVEAdjectiveKeeping valuesKeep this value between calls.integer, save :: count
BKINDAdjectiveKeeping valuesSelect the precision: how many digits a number keeps.real(kind=real64) :: t
BINT8 / INT16AdjectiveKeeping valuesA kind name from ISO_FORTRAN_ENV: a whole number of exactly 1 or 2 bytes. The same size as a BYTE or a WORD on the A side.integer(int16) :: table(0:255)
BREAL64AdjectiveKeeping valuesA kind name from ISO_FORTRAN_ENV: a decimal-point number of 8 bytes (double precision).real(real64) :: theta
BALLOCATEVerbKeeping valuesMake space for an ALLOCATABLE array.allocate(x(n))
BDEALLOCATEVerbKeeping valuesRelease the space of an array.deallocate(x)
B+ -Grammar markDoing arithmeticAdd and subtract.v = v + a*dt
B* /Grammar markDoing arithmeticMultiply and divide. A division of two whole numbers drops the fraction: 7/2 is 3.half = total / 2
B**Grammar markDoing arithmeticRaise to a power. x**2 is x times x.e = 0.5*m*v**2
B( )Grammar markDoing arithmeticGroup a part of a formula, as in maths.a = (b + c) * d
BSQRTIdiomDoing arithmeticSquare root.r = sqrt(x**2 + y**2)
BABSIdiomDoing arithmeticThe size of a number without its sign.d = abs(x - y)
BSIN / COSIdiomDoing arithmeticSine and cosine. The angle is in radians.vx = v*cos(angle)
BATAN2IdiomDoing arithmeticThe angle of a point (y, x).angle = atan2(y, x)
BEXP / LOGIdiomDoing arithmeticThe exponential and the natural logarithm.p = exp(-t/tau)
BMODIdiomDoing arithmeticThe remainder after a division.frame = mod(tick, 4)
BMAX / MINIdiomDoing arithmeticThe largest / smallest of the values.fuel = max(fuel, 0.0)
BNINTIdiomDoing arithmeticRound to the nearest whole number.px = nint(x)
BFLOORIdiomDoing arithmeticRound down to a whole number.row = floor(y)
BREAL( )IdiomDoing arithmeticChange a whole number into a REAL.avg = real(total) / n
BINT( )IdiomDoing arithmeticChange a REAL into a whole number. It drops the fraction.i = int(x)
BMODULOIdiomDoing arithmeticThe remainder that wraps around, never negative: modulo(-1, 256) is 255. MOD keeps the sign: mod(-1, 256) is -1. A byte register on the A side wraps like MODULO.z = table(modulo(t + 64, 256))
BIANDIdiomDoing arithmeticBitwise AND: keep only the bits that are 1 in both numbers. The same job as AND on the A side.byte = iand(v, 255)
BISHFT / SHIFTAIdiomDoing arithmeticMove the bits of a whole number. SHIFTA moves right and keeps the sign, as SAR does. ISHFT fills with zeros, as SHL and SHR do.y = shifta(s * 64, 8)
BRANDOM_NUMBERIdiomDoing arithmeticFill a value or an array with random numbers from 0 to 1. The laboratory uses it to make a terrain.call random_number(r)
BIF ... THEN ... END IFVerbMaking choices and repeatingDo a block only if a condition is true.if (fuel <= 0.0) then
BELSEGrammar markMaking choices and repeatingStarts the block to do when the condition is false.else
BSELECT CASEVerbMaking choices and repeatingChoose one block from many, by the value of one name.select case (key)
BDOVerbMaking choices and repeatingDo a block again, a number of times.do i = 1, 10
BDO WHILEVerbMaking choices and repeatingDo a block again while a condition is true.do while (.not. landed)
BEXITVerbMaking choices and repeatingStop the loop now.exit
BCYCLEVerbMaking choices and repeatingGo to the next turn of the loop.cycle
BSTOPVerbMaking choices and repeatingStop the program.stop
BERROR STOPVerbMaking choices and repeatingStop the program and report a failure. The build script sees the failure and stops. This is how a check says no.if (mismatches /= 0) error stop 'The A side and the B side disagree.'
BBTESTIdiomMaking choices and repeatingIs one bit of a whole number 1? The same question as TEST on the A side.if (btest(flags, 3)) then
BMERGEIdiomMaking choices and repeatingChoose the first value when the condition is true, or the second when it is false. One idiom replaces an IF block.merge('true ', 'false', ok)
B== /= < > <= >=Grammar markMaking choices and repeatingCompare two values: equal, not equal, less, greater, less or equal, greater or equal.if (x /= 0) then
B.and. .or. .not.Grammar markMaking choices and repeatingJoin or reverse conditions.if (a .and. .not. b) then
Bx(:)Grammar markWorking with many valuesAll the values of the array x.x(:) = 0.0
Bx(2:5)Grammar markWorking with many valuesThe values of x from position 2 to position 5.y = x(2:5)
BWHEREVerbWorking with many valuesChange only the values that meet a condition.where (x < 0.0) x = 0.0
BCONCURRENTAdverbWorking with many valuesIn DO CONCURRENT: the steps can happen in any order, so the compiler can do them at the same time.do concurrent (i = 1:n)
BSUMIdiomWorking with many valuesAdd all the values.total = sum(scores)
BPRODUCTIdiomWorking with many valuesMultiply all the values.p = product(x)
BMAXVAL / MINVALIdiomWorking with many valuesThe largest / smallest value.best = maxval(scores)
BMAXLOCIdiomWorking with many valuesThe position of the largest value.i = maxloc(scores, 1)
BCOUNTIdiomWorking with many valuesHow many values meet a condition.n = count(alive)
BANY / ALLIdiomWorking with many valuesTrue if one value / all values meet a condition.if (any(hit)) then
BSIZEIdiomWorking with many valuesHow many values an array holds.n = size(x)
BDOT_PRODUCTIdiomWorking with many valuesMultiply two lists value by value, then add the results.d = dot_product(a, b)
BMATMULIdiomWorking with many valuesMultiply two matrices (tables of numbers).p2 = matmul(rot, p)
BTRANSPOSEIdiomWorking with many valuesTurn the rows of a table into columns.t = transpose(m)
BRESHAPEIdiomWorking with many valuesGive the same values a different shape.m = reshape(v, [2, 2])
BPROGRAMNote to the translatorOrganizing a programThe start of the primary program.program lander
BENDNote to the translatorOrganizing a programThe end of a program, module, subroutine or function.end program lander
BMODULENote to the translatorOrganizing a programA named box of related names and procedures.module physics
BUSENote to the translatorOrganizing a programMake the names in a module available here.use physics
BCONTAINSNote to the translatorOrganizing a programThe procedures come after this line.contains
BSUBROUTINENote to the translatorOrganizing a programA named procedure that does a job.subroutine draw(ship)
BFUNCTIONNote to the translatorOrganizing a programA named procedure that returns one value.function speed(v)
BIMPLICIT NONENote to the translatorOrganizing a programEvery name must have a declared type. Without it, old Fortran guesses the type from the first letter.implicit none
BCALLVerbOrganizing a programRun a subroutine.call draw(ship)
BINTENT(IN)AdjectiveOrganizing a programThis argument comes in, and the procedure must not change it.real, intent(in) :: dt
BINTENT(OUT)AdjectiveOrganizing a programThe procedure gives this argument its value.real, intent(out) :: v2
BPUREAdjectiveOrganizing a programThis procedure changes nothing outside itself.pure function f(x)
BELEMENTALAdjectiveOrganizing a programWrite the procedure for one value. Fortran then applies it to each value of an array.elemental function f(x)
BPRIVATE / PUBLICAdjectiveOrganizing a programHide a name inside its module, or show it to other code.private :: helper
B!Grammar markOrganizing a programStarts a comment. The compiler ignores the rest of the line.! gravity of the Moon
B&Grammar markOrganizing a programThe statement continues on the next line.x = a + b + &
BPRINTVerbShowing text and reading keysShow values on the screen.print *, "Fuel:", fuel
BWRITEVerbShowing text and reading keysWrite values to the screen or to a file.write(*, '(F8.2)') fuel
BREADVerbShowing text and reading keysRead values from the keyboard or from a file.read *, thrust
BOPENVerbShowing text and reading keysConnect a file to a unit number.open(newunit=u, file='map.dat')
BCLOSEVerbShowing text and reading keysDisconnect a file.close(u)
BNEWUNIT=Grammar markShowing text and reading keysIn OPEN: let the compiler choose a free unit number and put it in the name.open(newunit=u, file='sine.bin')
BACCESS='STREAM'Grammar markShowing text and reading keysIn OPEN: read or write the raw bytes of a file, with no record marks. This is how the B side writes a table for the A side.open(newunit=u, file='sine.bin', access='stream', form='unformatted')
B'(I4.4)' / '(I0)'Grammar markShowing text and reading keysTwo formats for a whole number. I4.4 keeps the leading zeros (0042), for a countdown. I0 removes them (42), for a score.print '(i4.4)', fuel
BGET_COMMAND_ARGUMENTIdiomShowing text and reading keysRead one word that the person typed after the program name. The checker gets the file name this way.call get_command_argument(1, in_file)
B*Grammar markShowing text and reading keysIn PRINT and READ: let Fortran choose the layout.print *, x
B'(F8.2)'Grammar markShowing text and reading keysA layout pattern. F8.2 is a number 8 characters wide with 2 decimals.write(*, '(F8.2)') x
BISO_C_BINDINGNote to the translatorControlling the hardwareA built-in module with the words to talk to C code, and through C, to the hardware.use iso_c_binding
BBIND(C)AdjectiveControlling the hardwareMake this procedure or type match the layout of the C language.subroutine vsync() bind(c)
BISO_FORTRAN_ENVNote to the translatorControlling the hardwareA built-in module with exact sizes, for example INT32 and REAL64.use iso_fortran_env
BSYSTEM_CLOCKIdiomControlling the hardwareRead the count of clock ticks.call system_clock(t0)
BCPU_TIMEIdiomControlling the hardwareRead the processor time that the program used.call cpu_time(t)
BEXECUTE_COMMAND_LINEIdiomControlling the hardwareAsk the operating system to run a command.call execute_command_line('ls')