实验目的
1、掌握程序设计中的3种基本结构(顺序结构、选择程序、循环程序)。
2、熟练使用汇编语言的指令:数据传送类指令、数据运算类指令、逻辑判断类指令与转移指令、循环指令等。
3、初步了解系统功能调用的使用方法,尝试使用01H号功能调用进行字符输入的方法及使用02H号功能调用进行字符输出(显示)的方法。
实验内容
计算1+2+3+…+10,将结果显示在屏幕上。
利用01H号功能调用输入10个一位数字,并将其由ASCII码转换为二进制数,依此保存到变量BUF的10个字节中,变量BUF的形式为BUF DB 10 DUP(?)。编程求出这10个数中的最大数和最小数,将最大数存入MAX单元、最小数存入MIN单元,并将其在屏幕上显示出来。
对于第2题,怎样修改程序可以同时实现将10个数字的累加功能。(选作)
对于第2题,若要求输入的是两位数,又该怎么办?(选作)
设计思想
1、先将1-10循环求和,为了将结果显示在屏幕上,需要讲计算后保存在ax中的结果以十进制形式输出,可以将结果的两位数分别存于低位和高位中,即除以10取整和余 AL是商,AH是余数,后加上30h。
2、使用SI寄存器,用于在存储器中寻址。利用循环输入10个数字,将10个数比较,大的放在AL,小的放在BL。利用01H号功能,输出。
3、结合第1题和第2题。
4、修改输入。
程序代码
code segment
main proc far
assume cs:code
start:
push ds
sub ax,ax
push ax
mov bx,0ah
mov cx, 0ah
sum1:
add ax,bx
dec bx
loop sum1
printit:
mov bl,10
div bl
add al,30h
mov ch,ah
mov dl,al
mov ah,2
int 21h
add ch,30h
mov dl,ch
mov ah,2
int 21h
ret
main endp
code ends
End
data segment ;数据段定义开始
buf db 10 dup(?) ;数据定义及其存储空间
max db ?
min db ?
Str1 db 0DH,0AH,'Please input: ','$' ;定义Str1的内容
Str2 db 0DH,0AH,'MAX:','$' ;定义Str2的内容
Str3 db 0DH,0AH,'MIN:','$' ;定义Str3的内容
data ends ;数据段定义结束
Stack segment stack ;堆栈段定义开始
db 10 dup(?

最低0.47元/天 解锁文章
1765

被折叠的 条评论
为什么被折叠?



