5.1
TITLE Add and Subtract
; This program adds and subtracts 32-bit integers.
; Last update: 06/01/2006
.386
.model flat,stdcall
.stack 4096
INCLUDE Irvine32.inc
.data
num DWORD 0FFFFFF9Ch
snum BYTE 21 DUP('A')
bnum DWORD 1,2,3,4,5,6,7
myArray WORD 20 DUP(?)
sizes = ($-myArray)
color WORD 0, 4*16, 8*16, 12*16
.code
main PROC
mov ecx, LENGTHOF color
mov esi, 0
l1:
mov ax, yellow
add ax, color[esi]
call SetTextColor
add esi, TYPE color
call DumpRegs
loop l1
INVOKE ExitProcess, 0
main ENDP
END main
5.2
TITLE Add and Subtract
; This program adds and subtracts 32-bit integers.
; Last update: 06/01/2006
.386
.model flat,stdcall
.stack 4096
INCLUDE Irvine32.inc
.data
tmp DWORD ?
num = 45
dwData DWORD 1, 1, num DUP(?)
filename BYTE "myfile.txt", 0
.code
main PROC
call createnum
call writenum
INVOKE ExitProcess, 0
main ENDP
createnum PROC
pushad
mov eax, 1
mov ebx, 1
mov ecx, num
mov esi, 2*(TYPE dwData)
l1:
mov tmp ,ebx
add ebx, eax
mov eax, tmp
mov dwData[esi], ebx
add esi, TYPE dwData
loop L1
popad
ret
createnum ENDP
writenum PROC
mov edx, OFFSET filename
call CreateOutputFile
mov edx, OFFSET dwData
mov ecx, SIZEOF dwData
call WriteToFile
ret
writenum ENDP
END main
5.3
TITLE Add and Subtract
; This program adds and subtracts 32-bit integers.
; Last update: 06/01/2006
.386
.model flat, stdcall
.stack 4096
INCLUDE Irvine32.inc
TAB = 9
.data
aName BYTE "Lincoln",0
nameSize = ($-aName) - 1
INTEGER_COUNT = 2
str1 BYTE "enter a :", 0
str2 BYTE "The sum is:", 0
array DWORD INTEGER_COUNT DUP(?)
.code
main PROC
call Clrscr
mov esi, OFFSET array
mov ecx, INTEGER_COUNT
call PromptForIntegers
call ArraySum
call DisplaySum
INVOKE ExitProcess, 0
main ENDP
PromptForIntegers PROC USES ecx edx esi
mov edx, OFFSET str1
L1:
call WriteString
call ReadInt
call Crlf
mov [esi], eax
add esi, TYPE DWORD
loop L1
ret
PromptForIntegers ENDP
ArraySum PROC USES esi ecx
mov eax, 0
L1:
add eax, [esi]
add esi, TYPE DWORD
loop L1
ret
ArraySum ENDP
DisplaySum PROC USES edx
mov edx, OFFSET str2
call WriteString
call WriteInt
call Crlf
ret
DisplaySum ENDP
END main
5.4
TITLE Add and Subtract
; This program adds and subtracts 32-bit integers.
; Last update: 06/01/2006
.386
.model flat, stdcall
.stack 4096
INCLUDE Irvine32.inc
TAB = 9
.data
aName BYTE "Lincoln",0
nameSize = ($-aName) - 1
INTEGER_COUNT = 2
str1 BYTE "enter a :", 0
str2 BYTE "The sum is:", 0
array DWORD INTEGER_COUNT DUP(?)
num = 3
.code
main PROC
mov ecx, num
l0:
push ecx
call Clrscr
mov esi, OFFSET array
mov ecx, INTEGER_COUNT
call PromptForIntegers
call ArraySum
call DisplaySum
pop ecx
loop l0
INVOKE ExitProcess, 0
loop l0
main ENDP
PromptForIntegers PROC USES ecx edx esi
mov edx, OFFSET str1
L1:
call WriteString
call ReadInt
call Crlf
mov [esi], eax
add esi, TYPE DWORD
loop L1
ret
PromptForIntegers ENDP
ArraySum PROC USES esi ecx
mov eax, 0
L1:
add eax, [esi]
add esi, TYPE DWORD
loop L1
ret
ArraySum ENDP
DisplaySum PROC USES edx
mov edx, OFFSET str2
call WriteString
call WriteInt
call Crlf
ret
DisplaySum ENDP
END main
5.5
TITLE Add and Subtract
; This program adds and subtracts 32-bit integers.
; Last update: 06/01/2006
.386
.model flat, stdcall
.stack 4096
INCLUDE Irvine32.inc
.data
num = 50
TAB = 9
.code
main PROC
mov ecx, num
l1:
mov eax, 40
call RandomRange
sub eax, 20
call WriteInt
mov al, TAB
call WriteChar
loop l1
INVOKE ExitProcess, 0
main ENDP
END main
5.6
TITLE Add and Subtract
; This program adds and subtracts 32-bit integers.
; Last update: 06/01/2006
.386
.model flat, stdcall
.stack 4096
INCLUDE Irvine32.inc
.data
index = 10
TAB = 9
totalnum = 20
.code
main PROC
mov ecx, totalnum
l0:
push ecx
mov al, TAB
call WriteChar
mov ecx, index
l1:
mov eax, 26
call RandomRange
add eax, 65
call WriteChar
loop l1
pop ecx
loop l0
INVOKE ExitProcess, 0
main ENDP
END main
5.7
TITLE Add and Subtract
; This program adds and subtracts 32-bit integers.
; Last update: 06/01/2006
.386
.model flat, stdcall
.stack 4096
INCLUDE Irvine32.inc
.data
index = 10
TAB = 9
totalnum = 100
nchar = 'A'
.code
main PROC
mov ecx, totalnum
l0:
call GetMaxXY
movzx eax, dh
call RandomRange
mov dh, al
movzx eax, dl
call RandomRange
mov dl, al
call Gotoxy
mov eax, nchar
call WriteChar
mov eax, 100
call Delay
loop l0
INVOKE ExitProcess, 0
main ENDP
END main
5.8
TITLE Add and Subtract
; This program adds and subtracts 32-bit integers.
; Last update: 06/01/2006
.386
.model flat, stdcall
.stack 4096
INCLUDE Irvine32.inc
.data
num = 16
nchar DWORD 'A'
.code
main PROC
mov ecx, num
l0:
push ecx
mov eax, ecx
sub eax, 1
shl ax, 4
mov ecx, num
l1:
add eax, ecx
dec eax
call SetTextColor
mov eax, nchar
call WriteChar
loop l1
pop ecx
loop l0
INVOKE ExitProcess, 0
main ENDP
END main