**实验二 汇编语言程序设计(顺序、多分支、循环)**
一. 实验目的
1、掌握顺序和循环程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
二. 实验内容
1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:
①计算表达式值(V–(X*Y+Z-720))/X;
②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。
2、使用地址表实现如下功能:根据输入的数字1-7,分别显示相应的英文星期名,如果输入其他字符,则重新输入。
3、求一个班50名学生成绩的平均值、最大值和最小值,并将结果显示出来。
4、从键盘读入一个字符串,以Enter结束,字符串不超过60个字符,并打印该字符串;查找中间是否有自己名字拼音首字母缩写的子串。如果有,输出‘TRUE’;否则,输出‘FALSE’)。
设置的名字为pcy (彭陈宇)
三. 实验过程和程序
1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:
①计算表达式值(V–(XY+Z-720))/X;(200-(4200+20-720))/4=25
②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。
stack segment stack
dw 512 dup(?)
stack ends
data segment
x dw 0004h
y dw 00c8h
z dw 0014h
v dw 00c8h
sum1 dw ?
sum2 dw ?
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov ax,x
imul y
mov cx,ax
mov bx,dx
mov ax,z
cwd
add cx,ax
adc bx,dx
sub cx,02d0h
sbb bx,0
mov ax,v
cwd
sub ax,cx
sbb dx,bx
idiv x
mov sum1,ax
mov sum2,dx
code ends
end start
2、使用地址表实现如下功能:根据输入的数字1-7,分别显示相应的英文星期名,如果输入其他字符,则重新输入。
stack segment stack
dw 512 dup(?)
stack ends
data segment
addrtable dw l1,l2,l3,l4,l5,l6,l7;
s1 db 'Monday$'
s2 db 'Tuesday$'
s3 db 'Wedensday$'
s4 db 'Thursday$'
s5 db 'Friday$'
s6 db 'Saturday$'
s7 db 'Sunday$'
msg db 'number:',0dh,0ah,'$'
data ends
code segment
assume cs:code, ds:data
start: mov ax,data
mov ds,ax
start1: mov dx,offset msg
mov ah,9
int 21h
mov ah,1
int 21h
cmp al,'1'
jb start1
cmp al,'7'
ja start1
and ax,000fh
dec ax
shl ax,1
mov bx,ax
jmp addrtable[bx]
l1: lea dx,s1
jmp displ
l2: lea dx,s2
jmp displ
l3: lea dx,s3
jmp displ
l4: lea dx,s4
jmp displ
l5: lea dx,s5
jmp displ
l6: lea dx,s6
jmp displ
l7: lea dx,s7
jmp displ
displ: mov ah,9
int 21h
mov dl, 0ah
mov ah, 02h
int 21h
mov dl, 0dh
mov ah, 02h
int 21h
mov ax,4c00h
int 21h
code ends
end start
3、求一个班50名学生成绩的平均值、最大值和最小值,并将结果显示出来。
stack segment stack
dw 512 dup(?)
stack ends
data segment
score db 0ah dup(32h,3ch,46h,50h,5ah)
sum dw ?
avg db ?
minnum db 127
maxnum db -128
msg1 db 'avg: $ '
msg2 db 'max: $'
msg3 db 'min: $'
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov ax,0h
mov cx,0032h
mov di,0h
again: mov bl,score[di]
add sum,bx
inc di
loop again
outavg: mov ax,sum
mov bl,32h
div bl
mov avg,al
mov ax,0h
mov si,0h
mov cx,0032h
min: mov al,score[si]
cmp al,minnum
jl outmin
jmp minagain
outmin: mov minnum, al
minagain: inc si
loop min
mov ax,0h
mov si,0h
mov cx,0032h
max: mov al,score[si]
cmp al,maxnum
jg outmax
jmp maxagain
outmax: mov maxnum,al
maxagain:inc si
loop max
displ:
mov dx,offset msg1
mov ah,09h
int 21h
mov al,avg
cbw
mov cl,10
idiv cl
mov dl,al
mov cl,ah
add dl,30h
mov ah,02h
int 21h
mov ah,02h
mov dl,cl
add dl,30h
int 21h
mov dl,20h
int 21h
mov dl, 0ah
mov ah, 02h
int 21h
mov dl, 0dh
mov ah, 02h
int 21h
mov dx,offset msg3
mov ah,09h
int 21h
mov al,minnum
cbw
mov cl,10
idiv cl
mov dl,al
mov cl,ah
add dl,30h
mov ah,02h
int 21h
mov ah,02h
mov dl,cl
add dl,30h
int 21h
mov dl,20h
int 21h
mov dl, 0ah
mov ah, 02h
int 21h
mov dl, 0dh
mov ah, 02h
int 21h
mov dx,offset msg2
mov ah,09h
int 21h
mov al,maxnum
cbw
mov cl,10
idiv cl
mov dl,al
mov cl,ah
add dl,30h
mov ah,02h
int 21h
mov ah,02h
mov dl,cl
add dl,30h
int 21h
mov dl,20h
int 21h
mov ah,4ch
int 21h
code ends
end start
4、从键盘读入一个字符串,以Enter结束,字符串不超过60个字符,并打印该字符串;查找中间是否有自己名字拼音首字母缩写的子串。如果有,输出‘TRUE’;否则,输出‘FALSE’)。
设置的名字为pcy (彭陈宇)
stack segment stack
dw 512 dup(?)
stack ends
data segment
data1 db 'pcy$'
data2 db 60,?,60 dup('$')
string1 db 'TURE$'
string2 db 'FALSE$'
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov es,ax
mov ah,0ah
mov dx,offset data2
int 21h
mov ah,2h
mov dl,0ah
int 21h
mov ah,2h
mov dl,0dh
int 21h
mov dx,offset data2+2
mov ah,09h
int 21h
mov ah,2h
mov dl,0ah
int 21h
mov ah,2h
mov dl,0dh
int 21H
mov si,offset data2
mov di,offset data1
mov dx,si
mov bx,di
mov ah,58
again:
mov cx,3
repz cmpsb
jz yes
add dx,1
mov si,dx
mov di,bx
dec ah
jnz again
jmp no
no:
mov dx,offset string2
mov ah,09h
int 21h
jmp endcode
yes: mov dx,offset string1
mov ah,09h
int 21h
jmp endcode
endcode: mov ax,4c00h
int 21h
code ends
end start
下载完整实验报告,请移步下载区:
https://download.csdn.net/download/qq_43284141/11289139