汇编语言-课程设计1
- 格式:docx
- 大小:60.19 KB
- 文档页数:7
一、课题的主要功能首先,我们来了解一下汇编语言。
汇编语言是面向机器的程序设计语言。
在汇编语合中,用助记符代替操作码,用地址符号或标号代替地址码。
这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。
于是汇编语言亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。
本课题主要实现要求分别输入菱形的两条对角线长,能在屏幕上输出一个菱形的功能。
其次,我们来了解一下它的特点和作用。
1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
2. 保持了机器语言的优点,具有直接和简捷的特点。
3..可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
5.经常与高级语言配合使用,应用十分广泛。
对于不同型号的计算机,有着不同的结构的汇编语言汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。
汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。
使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
汇编语言是面向具体机型的,它离不开具体计算机的指令系统,因此,对于不同型号的计算机,有着不同的结构的汇编语言,而且,对于同一问题所编制的汇编语言程序在不同种类的计算机间是互不相通的。
然后介绍一下我将用汇编语言编制的程序的功能1·程序运行时会有提示要求用户输入菱形的对角线长。
在界面上输出提示,提示用户输入数据。
用户须根据提示输入菱形的对角线长。
当界面出现“please input chang”表示请用户输入南北方向的对角线长。
当用户输入数据以后,则会出现“please input kuan”表示用户可输入东西方对角线长。
课程设计(一)一、有除法溢出的dtoc子程序为:dtoc: push cxs:mov cx,10call divdw ;进行16位除法,被除数低16位存放在ax中,高16位存放在dx中,除数为10,存放在cx中,并调用不会产生溢出的除法运算的子程序divdwadd cx,30h ;将余数加上30h,就得到十进制数码字符对应的ASCII 码mov [si],cx ;将十进制数码字符对应的ASCII码存放在数据段中inc sipush ax ;保存此时的axadd ax,dx ;商是由ax和dx中的数据组合而成,为了判断商是否为0 mov cx,ax ;将商的高16位和低16位加起来,送给cxpop ax ;恢复axjcxz ok ;若商为0,则结束子程序jmp short sok: mov byte ptr [si],0 ;在字符串的结尾添个0call back ;调用把字符串反过来的子程序backpop cxretdivdw:mov bx,axmov ax,dxmov dx,0div cxpush axmov ax,bxdiv cxmov cx,dxpop dxretback:push dipush cxmov cx,simov di,0s1:mov al,[di]mov ah,0push axinc diloop s1mov di,0mov cx,sis2:pop axmov [di],alinc diloop s2pop cx二、课程设计首先,定义数据的时候,定义了一个栈段,在data段的开始定义了一个有10字节的空间,用来把数据转换成十进制形式的字符串,后面的总收入、雇员数、人均收入均为dword数据,方便后面统一来进行循环处理。
其次,刚开始的时候,用一个循环来计算人均收入,并把得到的数据放在data段中(在data段中定义了21个为0的dword数据用来存放人均收入)。
再次,在总体思路上,就是先定义一个32*21个字节的table段,把分别用子程序dtoc 把每个用二进制存放的数据转换成对应的十进制字符串,把字符串存放到table段中相应的位置,通过四个循环能把所有数据对应的字符串存放到table段中,这时的table 段中的存储模式与要求显示在屏幕上的模式一样,所以可以用一个双重循环将table 中的内容一个字节一个字节地复制到显示缓冲区的偶地址上,奇地址存放字符的颜色属性白色07h。
汇编语言课程设计1实验报告一、引言本实验报告旨在探讨汇编语言课程设计1的实验内容和相关实验结果。
通过对实验的详细介绍和分析,可以更好地理解和应用汇编语言的基本知识和技术。
本实验报告分为以下几个部分进行讨论。
二、实验目的本实验旨在通过设计汇编语言程序,掌握汇编语言的基本语法和编程技巧,提高对计算机底层的理解和应用能力。
具体实验目的如下:1.熟悉汇编语言的基本知识和编程环境;2.学习如何使用汇编语言进行简单的数据处理和运算;3.掌握汇编语言中的跳转、循环和分支等控制结构;4.加深对计算机组成原理的理解和应用。
三、实验设计3.1 实验环境本实验使用的汇编语言编程环境为MASM(Microsoft Macro Assembler),具体配置如下:•操作系统:Windows 10•开发工具:MASM32•编辑器:Notepad++3.2 实验内容本实验的实验内容为实现一个简单的加法计算器程序。
具体要求如下:1.输入两个整数,并将其保存到内存;2.将两个整数相加,并将结果保存到内存;3.从内存读取结果,并输出到屏幕。
3.3 实验步骤下面是实验的具体步骤:1.打开MASM32开发工具,创建一个新的汇编语言项目;2.在编辑器中编写汇编语言程序,包括数据定义、输入输出处理和计算过程;3.使用MASM进行编译和链接,生成可执行程序;4.运行程序,输入两个整数,并查看输出结果。
四、实验结果经过以上步骤,我们成功实现了一个简单的加法计算器程序。
以下是实验结果的截图:Enter the first number: 10Enter the second number: 20The sum is: 30五、实验分析通过以上实验结果可以看出,我们的加法计算器程序能够正确地将输入的两个整数相加,并输出计算结果。
这证明我们所编写的汇编语言程序是正确的。
同时,通过这个实验,我们还可以总结出一些经验和教训:•在程序设计过程中,要仔细考虑数据定义和处理逻辑的正确性和合理性;•在编写汇编语言程序时,要注意语法和命令的正确使用,避免出现语法错误;•在调试程序时,要仔细检查每一步执行的结果,找出可能的错误原因。
«汇编语言》课程设计、题目1.简单的计算器2.字典3.“ Pc”钢琴二、目的:本次课程设计的目的是提高学生分析问题、解决问题的能力以及实际动手能力,进一步加深学生对汇编语言程序设计基本理论的理解, 使学生熟练掌握汇编语言程序上机调试的方法技巧、结构化程序设计技术及高级汇编语言技术,能编写较复杂的应用程序,为学习后继课程打下扎实的基础。
三、已知技术参数和设计要求:1. 编写一个有符号多位十进制数的四则运算计算器程序,所输入的算式如下例所示:—278+ 32 =—132——12=11 *—32=—1234/—18= 要求程序能接收键入的算式,在接收到‘='号时,计算并以有符号十进制数的形式显示结果,然后允许用户继续键入算式。
如果键入算式后再键入‘ . ',则显示结果并结束整个程序。
(‘/'为整除)2. 已知一个由英语单词组成的字符串已按字典序排好,每个单词以空格符为结束,该串的首二字节为16 位无符号二进制数,用以说明串的长度。
试编程能从键盘上输入单词(以空格字符为结束),若字符串中没有该单词,则将该单词插入该串适当的位置,使其仍保持字典序,并修改串长度,显示单词在串中位置及串长度;若字符串中有该单词,则显示字符串中所有包含该单词的单词,及其在字符串中的位置。
3. 编写程序,程序运行时使PC机成为一架可弹奏的“钢琴”。
当按下数字键0~9时, 发出6,7, 1 ,2,3,4,5,6,7,i ,十个音调,按‘ . '则退出“钢琴”状态。
总体要求1)程序结构清晰,相对独立的功能应尽量用子程序实现2)有较多提示信息,以方便用户使用3)能检测用户输入的错误,并作相应处理4)每个程序应作较多测试,以证明程序的正确性实验一:源代码:DATA SEGMENTSIG DB 00H ;用来记录要进行的运算NUM1 DW 0 ;用来记录输入的第一个数NUM2 DW 0 ;用来记录输入的第二个数X DB 10 ; 当输入的下一个数字时,大小为前一个数需要乘 10 DATA ENDS ; 再加上当前的数CODE SEGMENTMAIN PROC FARJMP MAINT3L1: CMP AL,2EHJZ quit; 当输入的字符为” .”时转去 quit ,即程序运行结束CMP CX,1JNZ L2ASSUME CS:CODE,DS:DATASTART: MAINT1: MOV AH,1 ; INT 21H MAINT3: CMP AL,30H JL L1 CMP AL,3DH JZ MAINT2 CALL BIN CMP DX,1JNZ L5 NEG BXMOV DX,0 L5: CMP CX,1JZ L3 MOV NUM2,BX ; JMP MAINT3 L3: 输入要运算的算式 ;和 0作比较 ; 小于 0 时转去 L1 ;当输入”=”时转去MAINT2进行计算结果 ;调用子程序BIN ,计算数值真实大小 ;当DX 为1使需对BX 进行取反 ; 恢复 DX CX 不等于1时记录当前输入的第二个数MOV NUM1,BX; 记录当前输入的第一个数MOV SIG,AL MOV CX,2 ;当CX不等于1时,即为当前要进行的运算JMP MAINT1L2: CMP AL,2DHJNZ MAINT1MOV DX,1JMP MAINT1 quit: MOV AH,4CHINT 21HMAINT2:CMP SIG,'+'JNZ S1MOV AX,NUM1MOV BX,NUM2ADD AX,BXJMP MAINT4S1: CMP SIG,'-'JNZ S2MOV AX,NUM1SUB AX,NUM2JMP MAINT4S2: CMP SIG,'*'JNZ S3MOV AX,NUM1MOV DX,0IMUL NUM2JMP MAINT4S3: MOV AX,NUM1MOV BX,NUM2IDIV BLCBWMAINT4:MOV BP,SP TESTAX,8000HJZ OUT2 MOVBX,AX MOV DL,'-' ;返回MINT1继续输入算式; 程序运行结束;SIG 为” +”时进行加法操作;SIG 为”- ”时进行减法操作;SIG 为” * ”时进行乘法操作; 否则进行除法运算; 当数为负数时进行取反操作INT 21HMOV AX,BXNEG AX ;取AX的反; 不断乘以10OUT2: DIV XMOV BL,AHMOV BH,0PUSH BXMOV AH,0CMP AL,0JNZ OUT2OUT3: POP DX ; 输出所求的结果; 因为显示的是ascall 码,所以需加上30H ADD DL,30HMOV AH,2INT 21H; 当bp 和sp 指向同一位置时输出结束CMP BP,SPJNZ OUT3MOV DL,0AHMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HJMP START ;返回START进行下一轮计算MAIN ENDPBIN PROC NEAR ; 子程序BIN 用来转换输入的数字大小,即计算数值; 的真实大小PUSH DXMOV BX,0INC CXSUB AL,30HCBWXCHG AX,BXMOV DX,10MUL DXXCHG AX,BXBINT1: MOV AH,1INT 21HCMP AL,30H ; 判断输入的字符是否为数值JL EXITCMP AL,3DHJZ EXIT ; 当输入的字符不为字符时退出子程序SUB AL,30HBIN CBWXCHG AX,BXMOV DX,10 ;同过乘10 相加得到真实数值MUL DXXCHG AX,BXADD BX,AXJMP BINT1EXIT: POP DXRETBIN ENDPCODE ENDSEND START 运行结果:DATA SEGMENT;DICTIONARY 字典字符串,首两个字节为16位无符号二进制数,说明字符串长 度。
简单汇编语言课程设计一、课程目标知识目标:1. 学生能理解汇编语言的基本概念,掌握汇编语言的语法结构。
2. 学生能描述计算机硬件的基本组成,了解汇编语言与硬件操作的关系。
3. 学生能运用汇编语言编写简单的程序,实现基本的输入输出、运算和逻辑控制。
技能目标:1. 学生能独立完成汇编语言程序的编写、调试和运行。
2. 学生能运用汇编语言解决实际问题,培养编程思维和问题解决能力。
3. 学生能通过查阅资料,了解汇编语言在实际应用中的发展,提高信息素养。
情感态度价值观目标:1. 学生对汇编语言产生兴趣,认识到编程对个人和社会发展的意义。
2. 学生在编程过程中,培养耐心、细致、严谨的学术态度。
3. 学生通过学习汇编语言,增强团队协作意识,提高沟通与表达能力。
课程性质:本课程为信息技术课程,旨在让学生了解计算机底层原理,掌握汇编语言编程技能,培养编程兴趣。
学生特点:本课程针对的是高年级学生,他们已具备一定的计算机操作能力,思维活跃,好奇心强,具备一定的自学能力和团队合作精神。
教学要求:教师应注重理论与实践相结合,引导学生通过实际操作掌握汇编语言编程技能,激发学生的学习兴趣,培养其编程思维和问题解决能力。
同时,关注学生的个体差异,提供有针对性的指导,确保课程目标的实现。
在教学过程中,将目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 汇编语言概述- 了解汇编语言的发展历程- 掌握汇编语言与高级语言的异同2. 计算机硬件基础- 学习计算机硬件的基本组成- 了解汇编语言与硬件操作的关系3. 汇编语言语法- 掌握汇编语言的指令系统- 学习汇编语言的寄存器、操作数和地址表达式4. 汇编程序结构- 了解汇编程序的组织结构- 学习汇编程序的编写、调试和运行方法5. 基本输入输出操作- 掌握汇编语言实现输入输出的方法- 学习汇编语言与BIOS、中断的关系6. 算术运算与逻辑控制- 学习汇编语言实现基本算术运算和逻辑控制- 掌握相关指令和编程技巧7. 汇编语言编程实例- 分析经典汇编程序案例- 实践编写简单的汇编程序,解决实际问题教学内容安排和进度:第1周:汇编语言概述、计算机硬件基础第2周:汇编语言语法第3周:汇编程序结构第4周:基本输入输出操作第5周:算术运算与逻辑控制第6周:汇编语言编程实例及拓展教材章节关联:本教学内容与教材中“汇编语言程序设计”章节相关,涵盖了汇编语言的语法、编程技巧和实例。
王爽汇编语言课程设计一、课程目标知识目标:1. 理解汇编语言的基本概念,掌握汇编语言的语法和指令系统;2. 学会使用汇编语言进行程序设计和调试;3. 了解计算机硬件与汇编语言的关联,理解汇编语言在计算机运行中的作用。
技能目标:1. 能够运用汇编语言编写简单的程序,实现基本的输入输出、算术运算等功能;2. 学会使用汇编语言进行条件判断和循环控制;3. 掌握汇编语言与高级语言的混合编程方法。
情感态度价值观目标:1. 培养学生对计算机底层原理和汇编语言的兴趣,激发学习热情;2. 培养学生的编程思维和解决问题的能力,提高自信心;3. 强调汇编语言在计算机科学中的重要性,培养学生的专业素养。
课程性质分析:本课程为计算机科学与技术专业的基础课程,旨在帮助学生深入理解计算机硬件与软件的关联,掌握汇编语言的编程技能。
学生特点分析:学生处于大学本科阶段,具备一定的计算机基础知识和编程能力,对汇编语言有一定的好奇心,但可能对底层原理感到困惑。
教学要求:1. 结合实际案例,深入浅出地讲解汇编语言知识;2. 注重实践操作,培养学生的动手能力;3. 突出汇编语言在实际应用中的作用,提高学生的应用意识。
二、教学内容1. 汇编语言基础知识:介绍汇编语言的概念、发展历程、特点及应用场景,讲解汇编语言的语法和指令系统(对应教材第1章)。
- 数据类型与寄存器- 指令格式与寻址方式2. 汇编语言程序设计:讲解汇编语言的编程方法,通过案例分析和实践操作,使学生掌握汇编程序的设计与调试(对应教材第2-4章)。
- 程序结构- 基本指令的使用- 程序流程控制3. 汇编语言与硬件的关系:介绍汇编语言如何与计算机硬件交互,理解汇编语言在计算机运行中的作用(对应教材第5章)。
- 计算机硬件原理- 汇编语言与CPU的关联4. 混合编程:讲解汇编语言与高级语言的混合编程方法,提高学生的编程技能和应用能力(对应教材第6章)。
- 混合编程概念与原理- 混合编程实例分析5. 实践环节:设置多个实践任务,让学生动手编写汇编程序,巩固所学知识,提高实际操作能力(对应教材实践部分)。
汇编语言课课程设计一、教学目标本课程的教学目标是使学生掌握汇编语言的基本语法、指令集、程序设计方法和相关概念,培养学生运用汇编语言进行程序设计的能力。
具体目标如下:1.知识目标:–掌握汇编语言的基本语法和规则。
–熟悉汇编语言的指令集,包括数据传输、算术运算、逻辑运算、控制流等。
–了解汇编语言与硬件的关系,理解程序执行的过程。
2.技能目标:–能够使用汇编语言编写简单的程序,实现数据的输入输出、计算等功能。
–能够阅读和理解汇编语言程序,进行程序调试和优化。
–能够运用汇编语言进行硬件编程和系统开发。
3.情感态度价值观目标:–培养学生对汇编语言编程的兴趣,提高学生对计算机科学的热爱。
–培养学生解决问题的能力,培养学生的创新精神和团队合作意识。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个方面:1.汇编语言的基本语法和规则,包括数据类型、寄存器、指令格式等。
2.汇编语言的指令集,包括数据传输指令、算术运算指令、逻辑运算指令、控制流指令等。
3.汇编语言与硬件的关系,包括寄存器文件、程序计数器、栈等硬件部件的工作原理。
4.汇编语言程序的设计方法,包括程序的编写、调试和优化。
5.汇编语言在硬件编程和系统开发中的应用。
三、教学方法为了实现教学目标,本课程将采用多种教学方法,包括:1.讲授法:通过教师的讲解,使学生掌握汇编语言的基本概念和语法规则。
2.案例分析法:通过分析典型的汇编语言程序,使学生理解程序的设计方法和编程技巧。
3.实验法:通过上机实验,使学生亲自动手编写和调试汇编语言程序,提高学生的编程能力。
4.讨论法:通过小组讨论,激发学生的思考,培养学生的团队合作意识和创新能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:选用权威、实用的汇编语言教材,作为学生学习的主要参考资料。
2.参考书:提供相关的汇编语言编程书籍,供学生深入学习和参考。
3.多媒体资料:制作课件、教学视频等多媒体资料,丰富教学手段,提高学生的学习兴趣。
汇编语言课程设计1. 引言汇编语言是一种底层的编程语言,相比高级语言,它更接近计算机底层硬件。
学习汇编可以帮助我们深入理解计算机底层实现原理,对于提高我们的计算机编程能力有很大帮助。
本文将介绍我所设计的汇编语言课程项目。
2. 项目背景本项目的背景是我所在的大学计算机科学专业的汇编语言课程设计。
该课程设计的目的是让学生完成一个简单的汇编语言程序,对汇编语言编程有一个初步了解。
3. 项目内容我设计的汇编语言课程项目是一个简单的计算器程序。
该程序能够实现加减乘除四种基本运算。
该计算器程序将用户输入的两个数进行四则运算,并将结果输出。
程序具体实现过程如下:1.用户输入两个数2.用户输入运算符(+、-、*、/)3.程序进行相应的运算4.将运算结果输出4. 程序实现细节4.1 输入部分在IBM PC或IBM兼容机上的汇编程序中,BIOS提供了一个10号中断,用于从键盘读取单个字符。
可以使用该中断来实现从键盘输入数值和运算符。
具体来说,在程序中使用int 10h指令调用10号中断,该指令会将读取到的字符放入到AL寄存器中。
例如,要读取输入的第一个数,可以使用下面的汇编代码:xor ax, axmov ah, 0int 16h ;等待按键mov bh, 10 ;设置缓冲区大小为10lea di, num1 ;设置存放用户输入的缓冲区mov ch, 0 ;初始化输入计数器read_num:mov ah, 0 ;再次调用int 16hint 16h ;读取单个字符到AL寄存器cmp al, 0dh ;判断是否为回车键je read_num_donecmp al, 20h ;判断是否为空格je read_numcmp al, 30hjb read_numcmp al, 39hja read_nummov [di], al ;添加输入inc di ;移动指针inc ch ;计数cmp ch, bh ;缓冲区是否满了jne read_numread_num_done:mov [di], 0 ;字符串结束该代码段可以实现从键盘读取用户输入的第一个数,并存储到num1字符串中。
中北大学信息商务学院课程设计任务书汇编语言程序设计实验11/12 学年第二学期系别:信息与通信工程专业:自动化学生姓名:刘波学号:09050542X45 课程设计题目:成绩等级判断程序设计起迄日期: 6 月18 日~ 6 月24 日指导教师:刘长明系主任:王明泉下达任务书日期: 2012 年6月 18 日1.设计目的:设计一个根据所学汇编语言课程的知识,熟练8086汇编语言的编程原理,和程序设计思想,编写一个综合性应用程序进一步提高综合运用知识的能力。
2.设计内容和要求(1)题目内容:●成绩等级判断程序设计:90以上输出A,80~90输出B……;可以重复输入,有退出键功能。
●定时中断程序:定时30秒,在30秒内,输入字符,时间到输出字符个数。
●屏幕输入程序:屏幕上开窗口,按上下左右键,调节屏幕窗口尺寸。
实时时钟程序设计:每隔一秒显示系统时钟;可以重复输入,有退出键功能。
●闰年判别程序设计:输入四位年份判断是否为闰年,是输出Y,不是输出N;可以重复输入,有退出键功能。
(2)题目要求:以上题目任选一个做,写出设计说明书,包涵程序清单和流程图。
3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:(1)查阅资料,确定程序方案(2)画出流程图,编写程序(3)撰写课程设计说明书4.主要参考文献:《IBM PC汇编语言程序设计》沈美明,温冬禅,清华大学出版社,第二版。
5.设计成果形式及要求:课程设计说明书1份流程图1份程序清单1份6.工作计划及进度:2012年 6月18日 ~ 6月19日收集整理资料,确定程序设计方案6月20日 ~ 6月23日画出流程图,编写程序6月22日撰写课程设计说明书答辩系主任审查意见:签字:年月日程序设计一、题目基本内容设计题目:成绩评定具体要求:(1)显示简易数字菜单(2)输入成绩,显示成绩评定的等级(90-100为优,80-90为良,70-80为中,60-70为及格,60分以下为不及格)二、系统流程框图(al)=1或2?开始简易数字菜单选择菜单号退出输入成绩到bx (al)=1?(bx)=’o ’?(bx)<60?(bx)<70?(bx)<80?(bx)<90?(bx)<=100?显示等级A显示等级B 显示等级C显示等级D 显示等级E三、课程设计的具体内容说明根据课题的要求,主要完成一下几方面的设计:1.显示简易数字菜单,根据选择的菜单号,执行相应的分支程序2.从键盘输入一个十进制数字(编写一个子程序)3.对输入的数据进行比较,显示相应成绩等级(优,良,中,及格,不及格可以分别用A,B,C,D,E表示)四、课程设计中关键内容的分析设计说明1.简易数字菜单只有两个选择号(1~2),选择1表示就跳转到执行成绩评定的程序,选择2就返回到DOS窗口。
汇编语言简单课程设计一、课程目标知识目标:1. 理解汇编语言的基本概念,掌握汇编语言的语法和结构;2. 学会使用汇编语言编写简单的程序,理解程序执行的流程和机制;3. 了解汇编语言与机器语言的关系,明白汇编语言在计算机体系结构中的作用。
技能目标:1. 能够正确使用汇编语言编写、编译和调试简单的程序;2. 能够运用汇编语言进行基本的输入输出操作,实现数据的处理和控制流程;3. 能够分析并解决汇编程序中的常见问题,优化程序性能。
情感态度价值观目标:1. 培养学生对计算机底层原理的兴趣,激发深入学习计算机科学的热情;2. 培养学生的逻辑思维能力和解决问题的耐心,增强面对困难的勇气和毅力;3. 引导学生认识到汇编语言在计算机发展中的重要性,培养对计算机历史的尊重和敬畏。
课程性质:本课程为计算机科学与技术专业的选修课程,旨在帮助学生了解计算机底层原理,提高编程技能。
学生特点:学生具备一定的编程基础,对计算机原理有一定的了解,但汇编语言接触较少,需要从基础知识入手。
教学要求:结合学生特点和课程性质,课程设计应注重理论与实践相结合,以实例为主线,引导学生主动探索和实践,提高学生的编程能力和解决问题的能力。
教学过程中,注重激发学生的学习兴趣,培养学生的逻辑思维和团队合作精神。
通过本课程的学习,使学生能够掌握汇编语言的基本知识,为后续相关课程打下坚实基础。
二、教学内容1. 汇编语言概述- 了解汇编语言的发展历程和特点- 掌握汇编语言与高级语言的区别2. 计算机体系结构基础- 学习CPU的工作原理和寄存器的作用- 理解内存组织结构和寻址方式3. 汇编语言语法与指令集- 掌握汇编语言的语法规则- 学习常用汇编指令及其功能4. 汇编程序结构与流程控制- 熟悉汇编程序的基本结构- 学习分支、循环等流程控制语句的使用5. 汇编语言中的数据表示- 掌握二进制、十进制、十六进制等数据表示方法- 学习数据存储和处理的相关知识6. 常用汇编程序设计技巧- 掌握汇编程序中的宏定义和条件编译- 学习汇编程序中的优化技巧7. 汇编程序的编译与链接- 了解汇编程序的编译过程- 学习汇编程序与链接器的使用方法8. 汇编程序实例分析- 分析经典的汇编程序实例- 学习汇编程序在实际应用中的技巧和经验教学内容安排与进度:第1周:汇编语言概述第2周:计算机体系结构基础第3周:汇编语言语法与指令集第4周:汇编程序结构与流程控制第5周:汇编语言中的数据表示第6周:常用汇编程序设计技巧第7周:汇编程序的编译与链接第8周:汇编程序实例分析教学内容与教材关联性:本教学内容基于教材《汇编语言》进行组织,涵盖教材中相关章节的核心知识点,结合课程目标进行适当的调整和补充,确保教学内容与课程目标相符合。
汇编语言的课程设计一、课程目标知识目标:1. 理解汇编语言的基本概念和组成,掌握汇编语言的编程规则;2. 掌握汇编语言的常用指令,并能正确运用到程序编写中;3. 了解汇编语言与机器语言的关系,明白汇编语言在计算机体系结构中的作用;4. 学会使用汇编语言进行基本的输入输出操作,以及简单的数据处理。
技能目标:1. 能够独立编写简单的汇编程序,实现基本的功能需求;2. 能够运用汇编语言进行程序调试,找出并修正程序中的错误;3. 能够阅读和理解汇编语言的源代码,分析程序的执行过程;4. 能够通过汇编语言编程,提高对计算机硬件的理解和操作能力。
情感态度价值观目标:1. 培养学生对汇编语言的兴趣,激发他们探索计算机底层原理的热情;2. 培养学生严谨的编程习惯,注重代码质量和程序效率;3. 增强学生的团队合作意识,学会在编程过程中相互交流和分享经验;4. 培养学生面对编程挑战时的耐心和毅力,勇于克服困难,不断进步。
本课程针对高年级学生,具有较强的理论性和实践性。
通过本课程的学习,学生将深入理解计算机硬件与软件的紧密联系,提高编程能力和问题解决能力。
课程要求学生在掌握基本概念和技能的基础上,注重实际应用和创新能力的发展。
教学过程中,教师应关注学生的个体差异,提供针对性的指导和帮助,确保每位学生能够达到预定的学习成果。
二、教学内容本章节教学内容主要包括以下几部分:1. 汇编语言概述:介绍汇编语言的发展历程、特点及在计算机编程中的应用;- 教材章节:第1章 汇编语言基础知识2. 汇编语言基本概念:讲解汇编语言的组成元素,如指令、寄存器、内存单元等;- 教材章节:第2章 汇编语言的基本概念3. 汇编语言编程规则:学习汇编语言的语法、指令系统、伪指令等;- 教材章节:第3章 汇编语言的编程规则4. 汇编语言常用指令:掌握数据传送、算术运算、逻辑运算、控制转移等常用指令;- 教材章节:第4章 常用指令介绍5. 汇编语言程序设计:学习编写简单的汇编程序,进行基本的输入输出操作;- 教材章节:第5章 汇编语言程序设计6. 汇编语言与硬件的关系:探讨汇编语言如何与计算机硬件进行交互;- 教材章节:第6章 汇编语言与硬件的关系7. 汇编语言程序调试与优化:介绍汇编程序的调试方法、技巧以及性能优化;- 教材章节:第7章 程序调试与优化教学内容按照以上安排进行,保证教学进度的科学性和系统性。
汇编语言程序设计第一版课程设计一、课程设计目的本次课程设计旨在通过编程实现一些基本的汇编语言程序,让学生了解汇编语言的基本语法和程序设计思路,培养学生掌握汇编语言的能力和对计算机底层硬件的了解。
二、课程设计要求1.学生需要使用汇编语言编写一个简单的计算器,实现加减乘除运算。
2.学生需要使用汇编语言编写一个程序,用于从键盘输入一个整数,然后在屏幕上输出该整数的平方。
3.学生需要使用汇编语言编写一个程序,用于读取一个磁盘文件的内容并在屏幕上显示。
4.学生需要使用汇编语言编写一个简单的动态链接库,实现一些基本的数学运算函数。
三、课程设计思路1. 计算器编写计算器程序的关键在于如何实现加减乘除运算。
我们可以通过使用计算机的CPU指令来实现这些运算。
例如,加法运算可以通过使用ADD指令来实现,减法运算可以通过使用SUB指令来实现,乘法和除法运算则可以通过使用MUL和DIV指令来实现。
在编写程序时,我们可以先通过MOV指令将需要进行运算的数值加载到寄存器中,然后再通过相应的指令进行运算,并将结果存储到指定的内存地址中。
2. 计算平方编写计算平方的程序需要使用到乘法指令。
我们可以通过从键盘上读取一个整数,然后将其乘以自己,最后将结果输出到屏幕上。
在编写程序时,我们需要使用INT 21H中断来读取键盘输入,并使用MOV和MUL指令进行乘法运算,并使用INT 21H中断来将结果输出到屏幕上。
3. 读取磁盘文件要读取磁盘文件的内容,我们首先需要使用INT 21H中断调用来打开需要读取的文件,并将文件句柄保存到寄存器中。
然后,通过使用READ指令从文件中读取数据,并将数据存储到指定的内存地址中。
最后,我们可以通过使用INT 21H中断调用来将读取到的数据输出到屏幕上。
4. 动态链接库动态链接库是一种可重定位目标文件,可以被多个程序共享使用。
在本次课程设计中,我们需要编写一个简单的动态链接库,用于实现一些基本的数学运算函数,例如加减乘除和求平方等操作。
汇编语言(王爽第三版)第10章课程设计1课程设计 1任务:将实验7中的Power idea公司的数据按照图10.所示的格式在屏幕上显示出来。
解:;注:函数中的标号为防止冲突,都加了本函数名为前缀;在Debug中输入“-g 90”,直接运行到结束assume cs:codedata segmentdb'1975','1976','1977','1978','1979','1980','1981 ','1982','1983' db'1984','1985','1986','1987','1988','1989','1990 ','1991','1992' db '1993','1994','1995';以上是表示21年的21个字符串dd16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd345980,590827,803530,1183000,1843000,2759000,37 53000,4649000,5937000;以上是表示21年公司总收的21个dword型数据dw3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226dw 11542,14430,45257,17800;以上是表示21年公司雇员人数的21个word型数据data endsagency segmentdb 8 dup(0)agency endscode segment start: mov ax,0b800hmov es,axmov di,0mov cx,80*24x: mov byte ptr es:[di],' ' ;将屏幕清空mov byte ptr es:[di+1],0 inc diinc diloop xmov ax,datamov es,axmov di,0mov bx,0mov ax,agencymov ds,axmov si,0mov dh,4mov cx,21x1: push cxmov ax,es:[di]mov ds:[si],axmov ax,es:[di+2]mov ds:[si+2],axmov byte ptr ds:[si+4],0 ;显示年份mov dl,0mov cl,2call show_strmov ax,es:[84+di]push dxmov dx,es:[84+di+2]call dtoc_dword ;显示收入pop dxmov dl,20mov cl,2call show_strmov ax,es:[84+84+bx]call dtoc_wordmov dl,40 ;显示雇员数mov cl,2call show_strmov ax,es:[84+di]push dxmov dx,es:[84+di+2]div word ptr es:[84+84+bx] ;计算人均收入并显示call dtoc_wordpop dxmov dl,60mov cl,2call show_stradd di,4add bx,2add dh,1pop cxloop x1mov ax,4c00hint 21h;名称:show_str;功能:在屏幕的指定位置,用指定颜色,显示一个用0结尾的字符串;参数:(dh)=行号,(dl)=列号(取值范围0~80),(cl)=颜色,ds:si:该字符串的首地址;返回:显示在屏幕上show_str:push axpush cxpush dxpush espush sipush dimov ax,0b800hmov es,axmov al,160mul dhadd dl,dlmov dh,0add ax,dxmov di,axmov ah,clshow_str_x:mov cl,ds:[si]mov ch,0jcxz show_str_fmov al,clmov es:[di],axinc siinc diinc dijmp show_str_x show_str_f:pop dipop sipop espop dxpop cxpop axret;名称:dtoc_word;功能:将一个word型数转化为字符串;参数:(ax)=word型的数据,ds:si指向字符串的首地址;返回:ds:[si]放此字符串,以0结尾dtoc_word:push axpush bxpush cxpush dxpush simov bx,0dtoc_word_x:mov dx,0mov cx,10div cxmov cx,axadd dx,'0'push dxinc bxjcxz dtoc_word_fjmp dtoc_word_xdtoc_word_f:mov cx,bxdtoc_word_x1:pop ds:[si]inc siloop dtoc_word_x1pop sipop dxpop cxpop bxpop axret;名称:dtoc_dword;功能:将一个double word型数转化为字符串;参数:(dx)=数的高八位,(ax)=数的低八位;返回:ds:[si]放此字符串,以0结尾;备注:会用到divdw函数dtoc_dword:push axpush bxpush cxpush dxpush simov bx,0dtoc_dword_x:mov cx,10call divdwpush cxinc bxcmp ax,0jne dtoc_dword_xcmp dx,0jne dtoc_dword_xmov cx,bxdtoc_dword_x1:pop ds:[si]add byte ptr ds:[si],'0'inc siloop dtoc_dword_x1pop sipop dxpop cxpop bxpop axret;名称:divdw;功能:除法,被除数32位,除数16位,商32位,余数16位,不会溢出;参数:(dx)=被除数高16位,(ax)=被除数低16位,(cx)=除数;返回:(dx)=商高16位,(ax)=商低16位,(cx)=余数divdw:push bxpush axmov ax,dxmov dx,0div cxmov bx,axpop axdiv cxmov cx,dxmov dx,bxpop bxret code ends end start。
《汇编语言》课程设计任务书一、题目1.简单的计算器2.字典3.“Pc”钢琴二、目的:本次课程设计的目的是提高学生分析问题、解决问题的能力以及实际动手能力,进一步加深学生对汇编语言程序设计基本理论的理解,使学生熟练掌握汇编语言程序上机调试的方法技巧、结构化程序设计技术及高级汇编语言技术,能编写较复杂的应用程序,为学习后继课程打下扎实的基础。
三、已知技术参数和设计要求:1.编写一个有符号多位十进制数的四则运算计算器程序,所输入的算式如下例所示:-278+32=-132――12=11*-32=-1234/-18=要求程序能接收键入的算式,在接收到‘=’号时,计算并以有符号十进制数的形式显示结果,然后允许用户继续键入算式。
如果键入算式后再键入‘.’,则显示结果并结束整个程序。
(‘/’为整除)2.已知一个由英语单词组成的字符串已按字典序排好,每个单词以空格符为结束,该串的首二字节为16位无符号二进制数,用以说明串的长度。
试编程能从键盘上输入单词(以空格字符为结束),若字符串中没有该单词,则将该单词插入该串适当的位置,使其仍保持字典序,并修改串长度,显示单词在串中位置及串长度;若字符串中有该单词,则显示字符串中所有包含该单词的单词,及其在字符串中的位置。
3.编写程序,程序运行时使PC机成为一架可弹奏的“钢琴”。
当按下数字键0~9时,发出6,7,1,2,3,4,5,6,7,i,十个音调,按‘.’则退出“钢琴”状态。
总体要求1)程序结构清晰,相对独立的功能应尽量用子程序实现2)有较多提示信息,以方便用户使用3)能检测用户输入的错误,并作相应处理4)每个程序应作较多测试,以证明程序的正确性实验一:源代码:DATA SEGMENTSIG DB00H;用来记录要进行的运算NUM1DW0;用来记录输入的第一个数NUM2DW0;用来记录输入的第二个数X DB10;当输入的下一个数字时,大小为前一个数需要乘10 DATA ENDS;再加上当前的数CODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART:MAINT1:MOV AH,1;输入要运算的算式INT21HMAINT3:CMP AL,30H;和0作比较JL L1;小于0时转去L1CMP AL,3DHJZ MAINT2;当输入”=”时转去MAINT2进行计算结果CALL BIN;调用子程序BIN,计算数值真实大小CMP DX,1JNZ L5NEG BX;当DX为1使需对BX进行取反MOV DX,0;恢复DXL5:CMP CX,1JZ L3MOV NUM2,BX;CX不等于1时记录当前输入的第二个数JMP MAINT3L3:MOV NUM1,BX;记录当前输入的第一个数JMP MAINT3L1:CMP AL,2EHJZ quit;当输入的字符为”.”时转去quit,即程序运行结束CMP CX,1JNZ L2MOV SIG,AL;当CX不等于1时,即为当前要进行的运算MOV CX,2JMP MAINT1;返回MINT1继续输入算式L2:CMP AL,2DHJNZ MAINT1MOV DX,1JMP MAINT1quit:MOV AH,4CH;程序运行结束INT21HMAINT2:CMP SIG,'+';SIG为”+”时进行加法操作JNZ S1MOV AX,NUM1MOV BX,NUM2ADD AX,BXJMP MAINT4S1:CMP SIG,'-';SIG为”-”时进行减法操作JNZ S2MOV AX,NUM1SUB AX,NUM2JMP MAINT4S2:CMP SIG,'*';SIG为”*”时进行乘法操作JNZ S3MOV AX,NUM1MOV DX,0IMUL NUM2JMP MAINT4S3:MOV AX,NUM1;否则进行除法运算MOV BX,NUM2IDIV BLCBWMAINT4:MOV BP,SP;当数为负数时进行取反操作TEST AX,8000HJZ OUT2MOV BX,AXMOV DL,'-'INT21HMOV AX,BXNEG AX;取AX的反OUT2:DIV X;不断乘以10MOV BL,AHMOV BH,0PUSH BXMOV AH,0CMP AL,0JNZ OUT2OUT3:POP DX;输出所求的结果ADD DL,30H;因为显示的是ascall码,所以需加上30HMOV AH,2INT21HCMP BP,SP;当bp和sp指向同一位置时输出结束JNZ OUT3MOV DL,0AHMOV AH,2INT21HMOV DL,0DHMOV AH,2INT21HJMP START;返回START进行下一轮计算MAIN ENDPBIN PROC NEAR;子程序BIN用来转换输入的数字大小,即计算数值;的真实大小PUSH DXMOV BX,0INC CXSUB AL,30HCBWXCHG AX,BXMOV DX,10XCHG AX,BXADD BX,AXBINT1:MOV AH,1INT21HCMP AL,30H;判断输入的字符是否为数值JL EXITCMP AL,3DHJZ EXIT;当输入的字符不为字符时退出子程序BIN SUB AL,30HCBWXCHG AX,BXMOV DX,10;同过乘10相加得到真实数值MUL DXXCHG AX,BXADD BX,AXJMP BINT1EXIT:POP DXRETBIN ENDPCODE ENDSEND START运行结果:实验二:源代码:DATA SEGMENT;DICTIONARY字典字符串,首两个字节为16位无符号二进制数,说明字符串长度。
汇编原理课程设计一、课程目标知识目标:1. 理解汇编语言的基本概念,掌握汇编语言的编程规范。
2. 学习并掌握汇编指令的种类、功能及使用方法。
3. 掌握汇编语言中的寄存器、内存寻址方式及其应用。
4. 了解汇编语言与机器语言的关系,理解计算机硬件执行程序的过程。
技能目标:1. 能够运用汇编语言编写简单的程序,实现基础的数据处理和逻辑控制。
2. 能够使用汇编语言进行寄存器操作、内存访问和中断处理。
3. 能够分析汇编程序的执行过程,进行简单的程序调试和优化。
情感态度价值观目标:1. 培养学生对计算机底层硬件和软件的探索兴趣,激发学生深入学习计算机原理的热情。
2. 培养学生严谨、细心的编程习惯,提高学生的逻辑思维和分析问题、解决问题的能力。
3. 增强学生的团队协作意识,提高学生在团队项目中沟通、协作的能力。
课程性质分析:汇编原理课程是计算机科学与技术专业的一门专业基础课程,旨在帮助学生深入理解计算机硬件与软件的交互原理,提高学生的编程技能和系统级编程能力。
学生特点分析:学生已具备一定的计算机基础知识和编程能力,但对于底层硬件和汇编语言的学习可能存在一定难度,需要引导学生逐步深入,激发学生的学习兴趣。
教学要求:结合课程性质和学生特点,本课程要求教师以实例教学为主,注重理论与实践相结合,让学生在实际操作中掌握汇编语言的知识点和技能要求。
通过课程学习,使学生在知识、技能和情感态度价值观方面均取得具体、可衡量的学习成果。
二、教学内容1. 汇编语言基础知识:介绍汇编语言的概念、发展历程及与高级语言的关系,讲解汇编语言的编程规范和语法结构。
教材章节:第一章 汇编语言概述2. 汇编指令系统:详细讲解汇编指令的种类、功能、操作数及其使用方法,包括数据传输指令、算术运算指令、逻辑运算指令等。
教材章节:第二章 汇编指令系统3. 寄存器与内存寻址:介绍寄存器的分类、用途及操作方法,讲解内存寻址方式及其在汇编语言中的应用。
教材章节:第三章 寄存器与内存寻址4. 汇编语言程序结构:分析汇编语言程序的组织结构,包括段定义、程序入口、程序结束等,讲解汇编程序的基本框架。
汇编语言课程设计案一、课程目标知识目标:1. 掌握汇编语言的基本概念和原理,理解汇编语言与机器语言的关系。
2. 学习汇编语言的语法规则,掌握常用指令的用法和功能。
3. 了解汇编语言程序的基本结构,学会编写简单的汇编程序。
技能目标:1. 能够使用汇编语言编写基本的程序,具备调试和运行汇编程序的能力。
2. 学会使用汇编语言进行数据运算和逻辑操作,具备解决实际问题的能力。
3. 能够运用汇编语言进行简单的系统编程,如中断处理和设备驱动程序。
情感态度价值观目标:1. 培养学生对计算机底层原理的兴趣和好奇心,激发学习汇编语言的积极性。
2. 培养学生的动手实践能力,增强对编程的自信心和解决问题的耐心。
3. 培养学生的团队合作意识,学会与他人合作共同探讨和解决编程中的问题。
课程性质:本课程为计算机科学与技术专业选修课程,侧重于汇编语言的实用性和实践性。
学生特点:学生具备一定的编程基础,对计算机组成原理有一定了解,但对汇编语言接触较少。
教学要求:结合学生特点,注重理论与实践相结合,强调实践操作,培养学生实际编程能力。
通过本课程的学习,使学生能够独立编写简单的汇编程序,并为后续相关课程打下基础。
教学过程中,关注学生的学习进度,及时调整教学方法和节奏,确保课程目标的达成。
二、教学内容1. 汇编语言概述- 了解汇编语言的发展历程和特点- 掌握汇编语言与高级语言的联系与区别2. 计算机组成原理回顾- 复习CPU、内存、寄存器等硬件组件的工作原理- 理解指令执行过程和数据存储方式3. 汇编语言基础知识- 学习汇编语言的语法规则- 掌握汇编指令的分类和用法4. 汇编程序结构- 学习汇编程序的组织结构- 熟悉伪指令、宏指令等概念5. 数据处理与运算- 学习数据定义、数据传送、算术运算、逻辑运算等指令- 掌握条件分支、循环结构等程序控制语句6. 子程序与中断处理- 学习子程序的编写与调用- 了解中断处理过程,学会编写中断处理程序7. 汇编语言与硬件操作- 掌握汇编语言访问I/O端口的方法- 学习汇编语言进行设备驱动程序编写8. 实践项目- 设计简单汇编程序,实现数据运算和逻辑操作- 结合硬件设备,编写中断处理和设备驱动程序教学内容安排与进度:本课程共安排16个学时,按照以上教学内容分为八个部分,每部分2个学时。
)
汇编语言课程实验报告
实验名称
课程设计1
实验环境
硬件平台:Intel Core i5-3210M
操作系统:DOSBox in Windows
软件工具:Turbo C , Debug, MASM
实验内容
《
将实验7中的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。
实验步骤
1.要完成这个实验,首先我们需要编写三个子程序。
第一个子程序是可以显示字符串到屏
幕的程序,其汇编代码如下:
;名称:show_str
;功能:在屏幕的指定位置,用指定颜色,显示一个用0结尾的字符串
;参数:(dh)=行号,(dl)=列号(取值范围0~80),(cl)=颜色,ds:si:该字符串的首地址
;返回:显示在屏幕上
¥
show_str:
push ax
push cx
push dx
push es
push si
push di
mov ax,0b800h
-
mov es,ax
mov al,160
mul dh
add dl,dl
mov dh,0
add ax,dx
mov di,ax
mov ah,cl
.
show_str_x:
mov cl,ds:[si]
mov ch,0
jcxz show_str_f
mov al,cl
mov es:[di],ax
inc si
inc di
【
inc di
jmp show_str_x
show_str_f:
pop di
pop si
pop es
pop dx
pop cx
}
pop ax
ret
2.第二个程序是将word型数据转换为字符串,这样我们才能调用第一个程序将其打印出
来。
第二个程序汇编代码如下:
;名称:dtoc_word
;功能:将一个word型数转化为字符串
;参数:(ax)=word型的数据,ds:si指向字符串的首地址
;返回:ds:[si]放此字符串,以0结尾
dtoc_word:
[
push ax
push bx
push cx
push dx
push si
mov bx,0
dtoc_word_x:
mov dx,0
^
mov cx,10
div cx
mov cx,ax
add dx,'0'
push dx
inc bx
jcxz dtoc_word_f
jmp dtoc_word_x
dtoc_word_f:
mov cx,bx
dtoc_word_x1:
pop ds:[si]
inc si
loop dtoc_word_x1
pop si
pop dx
}
pop cx
pop bx
pop ax
ret
3.除了以上两个程序,我们还需要考虑一个问题,即有些数据已经大于65535,应该编写
一个新的程序,将一个double word型数转化为字符串。
汇编代码如下:
;名称:dtoc_dword
;功能:将一个double word型数转化为字符串
;参数:(dx)=数的高八位,(ax)=数的低八位。
;返回:ds:[si]放此字符串,以0结尾
;备注:会用到divdw函数
dtoc_dword:
push ax
push bx
push cx
push dx
push si
、
mov bx,0
dtoc_dword_x:
mov cx,10
call divdw
push cx
inc bx
cmp ax,0
jne dtoc_dword_x
/
cmp dx,0
jne dtoc_dword_x
mov cx,bx
dtoc_dword_x1:
pop ds:[si]
add byte ptr ds:[si],'0'
inc si
loop dtoc_dword_x1
,
pop si
pop dx
pop cx
pop bx
pop ax
ret
4.考虑到div指令除法溢出的问题,我们还需要写一个程序,进行不会产生溢出的除法运
算,如下:
;名称:divdw
;
;功能:除法,被除数32位,除数16位,商32位,余数16位,不会溢出
;参数:(dx)=被除数高16位,(ax)=被除数低16位,(cx)=除数
;返回:(dx)=商高16位,(ax)=商低16位,(cx)=余数
divdw:
push bx
push ax
mov ax,dx。
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
pop bx
ret
5.、
6.将这四个子程序整合起来,并编写主程序。
主程序代码如下:
assume cs:code ;Ps:函数中的标号为防止冲突,都加了本函数名为前缀
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995'
;以上是表示21年的21个字符串
~
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd
345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;以上是表示21年公司总收的21个dword型数据
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,45257,17800
;以上是表示21年公司雇员人数的21个word型数据
data ends
\
agency segment
db 8 dup(0)
agency ends
code segment
start: mov ax,0b800h
mov es,ax
mov di,0
>
mov cx,80*24
x: mov byte ptr es:[di],' ' ;将屏幕清空
mov byte ptr es:[di+1],0
inc di
inc di
mov ax,data
mov es,ax
-
mov di,0
mov bx,0
mov ax,agency
mov ds,ax
mov si,0
mov dh,2
mov cx,21
x1: push cx
:
mov ax,es:[di]
mov ds:[si],ax
mov ax,es:[di+2]
mov ds:[si+2],ax
mov byte ptr ds:[si+4],0 ;显示年份
mov dl,0
mov cl,7
call show_str
\
mov ax,es:[84+di]
push dx
mov dx,es:[84+di+2]
call dtoc_dword ;显示收入
pop dx
mov dl,20
mov cl,7
call show_str。
mov ax,es:[84+84+bx]
call dtoc_word
mov dl,40 ;显示雇员数
mov cl,7
call show_str
mov ax,es:[84+di]
push dx
mov dx,es:[84+di+2]
div word ptr es:[84+84+bx] ;计算人均收入并显示 call dtoc_word
pop dx
mov dl,60
mov cl,7
call show_str
add di,4
add bx,2
add dh,1
pop cx
loop x1
mov ah,0
int 16h ;加上按任意键继续功能,可以直接双击运行
mov ax,4c00h
int 21h
编译链接程序,其运行效果如下:
实验总结
这个题目实际是前几个题目代码的整合,难点还是在于如何计算显示的行和列,如果错位了1个字节,显示的时候就可能出现重叠之类的情况。
还有要再写个dword型数据转ASCII字符的程序,不过有之前的经验,应该也不难。
通过此次的程序设计训练,基本上对之前所学的所有知识都有了一个系统性的掌握。