验体会
这次的实验让我学会了dos模式下的debug使用,学会了d,r,g,t命令的使用,我觉得尤其是t命令,让我了解了汇编语言,单步执行的使用方法,深刻的理解了汇编语言每一句对寄存器的改变,加深了上课的理解
实验二 汇编语言程序设计(顺序、循环)
一. 实验目的
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:
Mov ax,4c00h Int 21h End start mov ah,2 int 21h dec ch jnz again1
Code ends