intel汇编语言程序设计 后面编程

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值