《汇编语言程序设计》实验报告
实验二 汇编语言顺序程序设计1. 实验目的2. 实验任务3. 实验步骤3.1 顺序结构题目设计3.2 编写代码3.3 代码分析3.4 运行测试 4. 实验总结
实验二 汇编语言顺序程序设计
1. 实验目的
掌握汇编语言程序设计的基本方法和技能熟悉并搭建汇编语言环境掌握汇编语言源程序的编辑汇编连接和执行的完整过程掌握汇编过程中各种命令的作用及使用方法2. 实验任务
采用顺序结构设计汇编程序分析顺序结构程序的执行过程,掌握顺序结构汇编语言程序设计熟悉DEBUG常用命令的使用3. 实验步骤
3.1 顺序结构题目设计
设x是一个8位非符号数,且5<=x<=250,求y=x^2+8*x-30,不会超过字的范围 自然数求和程序3.2 编写代码
代码一
DATAS SEGMENT ;此处输入数据段代码 D1 DB 0DH,0AH,'Welcome to Assembly Language Program.',0DH,0AH,'$' D2 DB 0DH,0AH,'The program is completed.',0AH,0AH,'Welcome to use it next time.',0DH,0AH,'$' D3 DB 10 D4 DW ?DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 MOV DX,OFFSET D1 ;D1字符串输出 MOV AH,9 INT 21H MOV AL,D3 ;AL<--10 MUL AL ;AX<--10*10 MOV CX,AX ;CX<--AX MOV BL,D3 ;BL<--10 MOV AL,8 ;AL<--8 MUL BL ;AX<--8*10 ADD AX,CX ;AX<--80+100 SUB AX,30 ;AX<--100-30 MOV D4,AX ;D4<--AX MOV DX,OFFSET D2 ;D2字符串输出 MOV AH,9 INT 21H MOV AH,4CH INT 21HCODES ENDS END START
代码二
DATAS SEGMENT ;此处输入数据段代码 NUM DW 100 SUM DD ?DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 MOV AX,NUM ADD AX,1 ;AX=N+1 MUL NUM ;DX.AX=(1+N)*N SHR DX,1 ;32位逻辑右移一位,相当于/2 RCR AX,1 ;DX.AX=DX.AX/2 MOV WORD PTR SUM,AX MOV WORD PTR SUM+2,DX ;按小端方式保存 MOV AH,4CH INT 21HCODES ENDS END START
3.3 代码分析
代码一
初始值x放入AL中,使用MUL指令求x2,结果放入CX,8存入BL,利用MUL实现8*AL,结果存入AX中,ADD将AX与CX数据相加,最后SUB 30得出结果存入D4存储单元。
代码二
利用公式(1+N)N/2计算自然数求和:AX存入NUM值,+1后存入AX,使用MUL进行N操作,逻辑右移/2,最后结果以小端方式存DX.AX
3.4 运行测试
图表 1 代码一测试
图表 2 代码二运行
图表 3 代码二结果