汇编语言实验二报告

实验目的

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(?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值