实验内容
1)编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。
2)将从BUF单元开始的100个字节存储单元的小写字符改为大写字符,并统计小写字符的个数,并显示。
3)输入两串字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“no match”源代码
1)
; multi-segment executable file template.
data segment
; add your data here!
pkey db "press any key...$"
ten dw 10
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
mov cl,1
mov dl,2
mov bx,0
loop1:
mov al,cl
mul dl
cmp ax,200
jnbe print
add bx,ax
inc cl
inc dl
jmp loop1
print:
mov ax,bx
mov cx,0
loop2:
mov dx,0
div ten
inc cx
push dx
cmp ax,0
jz loop3
jmp loop2
loop3:
pop dx
add dl,30H
mov ah,2
int 21H
loop loop3
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
2)
; multi-segment executable file template.
data segment
; add your data here!
pkey db "press any key...$"
BUF db "AsfwoifhsamfinafoiathmalknvcklawfASFWGADGWasfioawfhoasfaQWQRFFARASFAAAAAAASSSSSSSSSSSSDDDDDDDDDDDDDD"
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
mov cx,100
mov dx,0 ;记录小写字母个数
mov si,0FFFFH ;si=-1循环开始时先+1从零开始
mov bx,offset BUF
loop1:
inc si
cmp [bx][si],61H
jb notlower
cmp [bx][si],7AH
jnbe notlower
sub [bx][si],20H
inc dx
notlower:
loop loop1
;输出小写字母个数
mov ax,dx
mov cx,0
mov bx,10
loop2:
mov dx,0
div bx
inc cx
push dx
cmp ax,0
jz loop3
jmp loop2
loop3:
pop dx
add dl,30H
mov ah,2
int 21H
loop loop3
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
3)
; multi-segment executable file template.
data segment
; add your data here!
pkey db "press any key...$"
maxlen1 db 100
actlen1 db 0
string1 dw 50 dup(?)
maxlen2 db 100
actlen2 db 0
string2 dw 50 dup(?)
match db "match$"
nomatch db "no match$"
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
lea dx,maxlen1
mov ah,0AH
int 21H
mov dl,0DH ;输入字符串时按下回车没有换行,添加回车换行符
mov ah,2
int 21H
mov dl,0AH
mov ah,2
int 21H
lea dx,maxlen2
mov ah,0AH
int 21H
mov dl,0DH
mov ah,2
int 21H
mov dl,0AH
mov ah,2
int 21H
mov cx,101
mov si,0
loop1:
mov al,actlen1[si]
mov bl,actlen2[si]
cmp al,bl
jnz notequal
inc si
loop loop1
lea dx,match
jmp print
notequal:
lea dx,nomatch
print:
mov ah,09H
int 21H
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.