五. 实验体会
这次的实验让我学会了DEBUG的运用,了解到了DEBUG对于程序的调试功能。
实验二 汇编语言程序设计(顺序、循环)
一. 实验目的
1、掌握顺序和循环程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
二. 实验内容
1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能: ①计算表达式值(V–(X*Y+Z-720))/X;
②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。 2、求一个班50名学生成绩的平均值(附加题:最大值和最小值,并将结果显示出来)
3、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:查找中间是否有‘asm’子串。如果有,输出‘Yes’;否则,输出‘No’)。
三. 实验过程和程序 程序: 1.
Data segment
X dw 1 Y dw 720 Z dw -1 V dw 1 Sum1 dw ? Sum2 dw ?
Data ends Code segment
Assume cs:code ds:data
mov ax,data Mov ds,ax Mov ax,x Mov bx,y Imul bx
;x*y
Start:
Mov cx,ax Mov bx,dx Mov ax,z Cwd Add cx,ax Adc bx,dx Sub cx,720 ;x*y+z
;x*y+z-720 Sbb bx,0 Mov ax,v
Cwd Sub ax,cx Sbb dx,bx Mov bx,x Idiv bx Mov sum1,ax
Mov sum2,dx
mov bx,sum1 mov ch,4 mov cl,4 again: rol bx,cl
mov dl,bl and dl,0fh cmp dl,0ah jl next
add dl,37h ;\
jmp down
next: add dl,30h ;\
down:
mov ah,2 int 21h dec ch jnz again
mov dl,23h ;\
;v-(x*y+z-720)
;(v-(x*y+z-720))/x
;sum1 存商,sum2 存余数
mov ah,2 int 21h
mov bx,sum2
mov ch,4 mov cl,4 mov dl,bl and dl,0fh cmp dl,0ah jl next1
add dl,37h ;\jmp down1
again1: rol bx,cl
next1: add dl,30h ;\down1: 2.
data segment
grade db 61,73,82,90,100,45 dup(70) avg1 db ? ;平均值的商 avg2 db ? max db ?
;平均值的余数 ;最大值
Mov ax,4c00h Int 21h End start mov ah,2 int 21h dec ch jnz again1
Code ends
min db ?;最小值 data ends code segment
assume cs:code,ds:data
mov ax,data
start: