汇编语言实验报告
验
原
理
(
算
法
流
程
)
.CODE
_start:
mov eax,0
mov ebx,0
mov ecx,0
output promot
while:
input value,1
cmp value,0dh
je endWhile ;如果回车则结束
cmp value,30h ;30h = 0
jl forOther ;小于30h为字符
Lf EQU 0ah ; line feed
.STACK 4096 ; reserve 4096-byte stack
.DATA
promotBYTE "请输入一段字符串,分别统计字母,数字,和其他字符的个数",cr,Lf,0
valueBYTE 1 DUP(?)
answerLetterBYTE "字母的个数:"
na DWORD ?
nb DWORD ?
n DWORD ?
answer BYTE " A B C ",0
crLf BYTE cr,Lf,0
.CODE ; start of main program code
_start:
mov ebx,0
mov ecx,0
output promot
input value,40
INVOKE ExitProcess, 0 ; exit with return code 0
PUBLIC _start ; make entry point public
END ; end of source code
年级
2012级
班号
1202班
学号
2012213537
专业
计算机科学与技术
姓名
郑凯伦
院系:计算机科学学院
专业:计算机科学与技术
年级:2012级
课程名称:汇编语言
学号:2012213537
姓名:郑凯伦
指导教师:雷建云
2014年6月18日
年级
2012
班号
1202班
学号
2012213537
专业
计算机科学与技术
姓名
郑凯伦
实验名称
实验
类型
设计型
综合型
创新型
设计型
实
验
目
的
或
要
求
一、掌握顺序程序设计的基本方法和技巧,熟练使用基本的I/O宏
mul ebx
mov na,eax ;A*A
doSecondWhile:
inc ecx
cmp ecx,n
jge endSecondWhile ;大于等于n则转移
;执行比较
(写不完时,可另加附页。)
实
验
原
理
(
算
法
流
程
)
mov eax,ecx
mul ecx ;B*B
mov nb,eax
mov edx,nb
ave BYTE 11 DUP(?)
BYTE cr,LF,0
.CODE
_start:
output promot1
mov sum,0
mov ebx,0
firstagain:
output promot2
input value,16
atod value
judge:
cmp eax,100 ;num >100转移重新输入
Lf EQU 0ah ; line feed
.STACK 4096 ; reserve 4096-byte stack
.DATA
promot1 BYTE "Please Enter four numbers to caclute the average",cr,Lf, 0
promot2 BYTE "Please Enter a number from 0 to 100! ",0
promot3 BYTE "The number isn't from 0 to 100,please Enter a right number ",0
value BYTE 16 DUP(?)
实
验
原
理
(
算
法
流
程
)
number DWORD ?
sum DWORD ?
answer BYTE "The four numbers' average is "
letterBYTE 11 DUP(?)
BYTE cr,Lf, 0
aswerNumber BYTE "数字的个数:"
numberBYTE 11 DUP(?)
BYTE cr,Lf, 0
answerOtherBYTE "其他字符的个数:"
otherBYTE 11 DUP(?)
BYTE cr,Lf, 0
实
二、程序要结构化,简明、易读和易调试。
三、执行速度较快且占用存储空间少。
实
验
原
理
程序设计流程:
1.程序接收用户键入的4个成绩,并计算出这4个成绩的总分和平均分数。在用户键入每个成绩和显示总分和平均分数之前都要有相应的提示信息。当用户输入的成绩不在[0,100]之间时,显示错误信息并重新等待正确输入。
jg doif
cmp eax,0 ;num <0转移重新输入
jl doif
jmp addSum ;满足0<=num<=100
doif:
output promot3
input value,16
atod value
jmp judge
addSum:
inc ebx
add sum,eax
cmp ebx,4
jne firstagain ;end firstagain
Lf EQU 0ah ; line feed
实
验
原
理
(
算
法
流
程
)
.STACK 4096 ; reserve 4096-byte stack
.DATA
promot BYTE "Please Enter a number as the max slide ",0
value BYTE 40 DUP(?)
nc DWORD ?
; Author: Karllen
; Date: revised 5/2014
.386
.MODEL FLAT
ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
INCLUDE io.h ; header file for input/output
cr EQU 0dh ; carriage return character
; Author: Karllen
; Date: 10/5/2014
.386
.MODEL FLAT
ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
INCLUDE io.h ; header file for input/output
cr EQU 0dh ; carriage return character
stanIf:
jmp doSecondWhile
endSecondWhile:
jmp doFirstWhile
endFirstWhile:
INVOKE ExitProcess, 0 ; exit with return code 0
PUBLIC _start ; make entry point public
(写不完时,可另加附页。)
年级
2012级
班号
1202班
学号
2012213537
专业
计算机科学与技术
姓名
郑凯伦
实验名称
实验3.1分类统计字符个数
实验
类型
设计型
综合型
创新型
设计型
实
验
目
的
或
要
求
一、掌握分支程序设计的原理和方法,重点掌握各种分支程序中形成和判断条件而产生的程序设计的设计方法和技巧。
二、掌握如何产生条件,如何对条件判断,如何实现分支。
;下面执行大于5Bh
cmp value,61h ;61h = a
jl forOther
;下面执行大于61h
cmp value,7Bh ;7Bh = {
jl forLetter
;下面执行7Bh到结束
jmp forOther
forLetter:
inHale Waihona Puke eaxjmp while
forNumber:
inc ebx
实验名称
实验4.1求毕达哥拉斯三角形的边
实验
类型
设计型
综合型
创新型
设计型
实
验
目
的
或
要
求
一、掌握循环程序设计的原理和方法,重点掌握循环程序结构的形式和常用循环程序的控制方法和技巧。
二、要求学会置循环参数的初值,掌握循环体构成,学会如何实现循环控制。
实
验
原
理
设计流程:
1.一个毕达哥拉斯三角形的三条边是由三个正整数A、B和C组成,从而A2+B2=C2。例如,数字3、4、5,由于9+16=25,而形成一个毕达哥拉斯三角形。写一段完整的汇编程序,实现输入一个值给C,然后显示值为C时,所有可能的毕达哥拉斯三角形。例如,如果输入5作为C的值,那么输出可以是: