目录
实验二 汇编语言程序设计(顺序、多分支、循环)
一. 实验目的
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结束,字符串不超过50个字符,并打印该字符串;查找中间是否有‘masm’子串。如果有,输出‘Yes’;否则,输出‘No’)。
三. 实验过程和程序
;the source code of the Exp 2.1
stack segment stack
db 512 dup(?)
stack ends
data segment
inputX db "input x:",0ah,0dh,'$'
inputY db "input y:",0ah,0dh,'$'
inputZ db "input z:",0ah,0dh,'$'
inputV db "input v:",0ah,0dh,'$'
x dw 0
y dw 0
z dw 0
v dw 0
sum1 dw 0
sum2 dw 0
input db 8
db 1 dup(?)
db 8 dup(?)
sign db 0
outputSum1 db "sum1:",0ah,0dh,'$'
outputSum2 db "sum2:",0ah,0dh,'$'
data ends
code segment 'code'
assume cs: code, ds: data, ss: stack
start:
mov ax, data
mov ds, ax
mov ax, stack
mov ss, ax
mov ah, 09h
lea dx, inputX
int 21h
call readInt
mov word ptr [x], ax
mov ah, 09h
lea dx, inputY
int 21h
call readInt
mov word ptr [y], ax
mov ah, 09h
lea dx, inputZ
int 21h
call readInt
mov word ptr [z], ax
mov ah, 09h
lea dx, inputV
int 21h
call readInt
mov word ptr [v], ax
mov ax, [x]
mov bx, [y]
imul bx ; x*y
add ax, [z] ; x*y+z
sub ax, 720 ; x*y+z-720
mov bx, [v]
sub bx, ax ; v-(x*y+z-720)
mov ax, bx
cwd
mov bx, [x]
idiv bx ; (v-(x*y+z-720))/x
mov [sum1], ax
mov [sum2], dx
lea dx, outputSum1
mov ah, 09h
int 21h
mov ax, [sum1]
call prinIint
mov dl, 0ah
mov ah, 02h
int 21h
mov dl, 0dh
mov ah, 02h
int 21h
lea dx, outputSum2
mov ah, 09h
int 21h
mov ax, [sum2]
call prinIint
mov ah, 4ch
int 21h
readInt:
pushf
pus