问题牵引的汇编语言教学实践

问题牵引的汇编语言教学实践
问题牵引的汇编语言教学实践

问题牵引的汇编语言教学实践

摘要:没有问题就是最大的问题。培养学生发现问题、提出问题、解决问题的能力是教学改革的重要内容。本文介绍了汇编语言教学活动中提出的系列问题,通过教师的示范、引导和鼓励,在轻松和谐的师生交流环境中将知识学习和思维能力培养有机的统一起来。

关键词:汇编语言;寄存器;思维能力;建构主义

1引言

没有问题就是最大的问题。没有问题的安逸如同没有引爆的地雷一样危险。在满堂灌输、不与学生交流和沟通的教学模式下,学生只是被动的接收知识,其发现问题的能力、提出问题的勇气、解决问题的追求、寻根问底的态度在悄无声息的受到摧残。久而久之,学生成为了一个无所思无所想的机械,失去了思维的活力、想象的活力、创造的活力。

问题的提出是解决问题的开始。围绕某一知识点提出一系列的问题,在师生互动中解决这些问题,能够将知识学习和能力培养有机的结合在一起。这种教学方法是建构主义理论实践的具体体现。建构主义认为认识是一种以主体已有的知识、经验、认知结构、心理结构等为基础的主动建构过程,坚信知识是由认知主体主动建构的结果,学习是认知主体的一个意义建构的过程,教学是培养学生主体性的创造活动,是引导学生从原有的知识经验中生长出新的知识经验的过程,教师应是学生主动建构意义的促进者、合作者和指导者。

本文以汇编语言的最基础内容——寄存器教学实践为例,介绍教学过程中提出的一系列问题。通过问题的牵引,教师与学生、学生与学生之间的互动,将有关知识组织组成网络,开阔学生的眼界,培养学生主动求知的技能、态度与习惯。

2数据寄存器教学中问的问题

数据寄存器是学习汇编语言时学生最早接触的内容,单纯的介绍有哪些寄存器(名称、大小),各个寄存器的含义(常用用法),学生们会觉得寄存器很抽象,既不知道寄存器有何实际用途,也不知道如何使用寄存器。我们通过系列问题的牵引,从不同角度不同侧面来解读寄存器,将新知识和已有知识组织成一个网络。

(1) 为什么要设置寄存器?

通过“CPU执行一个加法指令”的具体应用场景来引导学生回答。CPU要执行一个加法操作,就需要从内存取两个操作数,CPU能够一次性地取来两个操作数吗?答案是不能,地址总线、数据总线上一次只能加载一个单元的地址和数据。先取到的数据放在何处呢?类比生活中车站、超市的寄存处,学生能自然而然的接受寄存器的概念。

第三章 8086汇编语言程序格式

第三章8086汇编语言程序格式 练习题 3.4.1 单项选择题 1.下列选项中不能作为名字项的是()。 A.FH B.A3 C.3B D.FADC 2.下列指令不正确的是()。 A.MOV AL,123 B.MOV AL,123Q C.MOV AL,123D D.MOV AL,123H 3.下列指令不正确的是()。 A.MOV BL,OFFSET A B.LEA BX,A C.MOV BX,OFFSET A D.MOV BX,A 4.若定义“BUF DB 1,2,3,4”,执行MOV AL,TYPE BUF 后AL=()。 A.0 B.1 C.2 D.3 5.若定义“A EQU 100”,执行“MOV AX,A”后,AX=()。 A.A的偏移地址B.A单元中的内容 C.100 D.A的段地址 6.若定义“B DW 1,2,10 DUP(0)”,则该伪指令分配()字节单元。 A.10 B.20 C.22 D.24 7.若定义“C DD 2,4”,则该伪指令分配()个字节单元。 A.2 B.4 C.6 D.8 8、伪指令是()规定的汇编说明符,它在源程序汇编时进行说明。 A、DEBUG B、LINK C、MASM D、EDIT 9.在上机操作过程中,MASM命令执行后,除了生成一个目标文件外,根据选择还可以生成一个()文件。 A..LST B..EXE C..MAP D..ASM 10.LINK命令执行后可以生成一个以()为扩展名的文件。 A.ASM B.EXE C.OBJ D.COM 11.一个段最大可定义()字节。 A.1M B.64K C.32K D.16K 12.若要求一个段的起始位置能被256整除的单元开始,在定位方式选项中应选()。 A.BYTE B.WORD C.PARA D.PAGE 13.宏指令与子程序相比,在多次调用时,宏指令调用的目标程序长度比子程序调用的()。 A.相同B.长C.短D.不定 14.宏指令与子程序相比,子程序调用的执行速度比宏指令的()。 A.相同B.快C.慢D.不定 15.ASSUME伪指令说明了汇编程序所定义段与段寄存器的关系,它只影响()的设定。 A.源程序B.目标程序C.汇编程序D.连接程序

汇编语言程序设计综合设计实验项目

汇编语言程序设计创新实验项目 1. 编写一个完整的程序:根据零件的数量和总价格,计算出零件的单价。 主程序MAINPRO允许用户在键盘上输入零件数量和总价格; 子程序SUBCONV 把从键盘输入的ASCII 码转化为二进制; 子程序SUBCALC 计算出零件的单价; 子程序SUBDISP 把二进制表示的单价转化为十进制数并显示出结果。 要求:在程序设计时要求使用顺序、分支、循环、子程序和宏汇编等多种方法解决程序设计问题,对于较大的子程序最好使用子程序嵌套,程序中如有多次重复的代码最好使用重复汇编。 2.编写一个完整的程序,分别输入有一个班学生的百分制成绩,根据学生百分制成绩转换出五级分数制。如低于60分为E,60-69为D、70-79为C、80-89为B、90-99为A。并统计该班学生人数。 要求:1、学生成绩从键盘接收; 2、本程序可以重复运行,自行设计退出程序的方法; 3、程序具有可操作性,如,应该有提示语句和判断非法操作的方法和处理方式。 3. 编写一个完整的程序,在屏幕上显示如图所示数字拼成的形状。 0123456789 1234567890 2345678901 3456789012 4567890123 5678901234 6789012345 7890123456 8901234567 9012345678 4、按要求编写一个完整的程序。 要求:1、自BUFFER开始的内存单元中,存有一个ASCII码字符串。查找已知字符串中含有多少个子字符串‘AB’的个数,将统计结果以十进制形式显示输出。 2、在查找到子字符串‘AB’后添加空格字符。 5、按要求编写一个完整的程序。 要求:1、编写子程序SORT,将内存中10个无符号字数据由小到大排序。 2、编写子程序FIND,在上述已排好的数据区里查找某一个数,若找到,显示 其在数据区的位置,否则显示‘N’字符。 3、编写调用程序,完成排序及检索任务。 6、试编写一程序,要求根据用户键入的月份在终端上显示该月的英文缩写名。 7、试编写一程序,要求接收从键盘输入的一个班的学生成绩,并存放于30字的grade数组中,其中grade+1保存学号为了i+1的学生的成绩。然后根据grade中的学生成绩,把学生

基础的汇编语言小程序

基础的汇编语言小程序 1.1 Hello World !程序(完整段) (注:所有的标点符号以及空格回车均为英文输入法状态下的,否则报错!) DATAS SEGMENT STRING DB ‘Hello World !’,13,10,’$’ DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX LEA DX,STRING MOV AH,9 INT 21H MOV AH,4CH INT 21H CODES ENDS END START 1.2 Hello World !程序(简化段) .MODEL SMALL .DATA

STRING DB’Hello World !’,13,10,’$’ .STACK .CODE .STARTUP LEA DX,STRING MOV AH,9 INT 21H .EXIT END 2.1完整段的求3+5的和 DATA SEGMENT FIVE DB 5 DATAS ENDS STACKS SEGMENT DB 128 DUP(?) STACKS ENDS CODES SEGMENT ASSUME CD:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AL,FIVE

ADD AL,3 ADD AL,30H MOV DL,AL MOV AH,2 MOV AH,4CH INT 21H CODES ENDS END START 2.2;简化段的求3+5的和.MODEL SMALL .DATA FIVE DB 5 .STACK DB 128 DUP (?) .CODE .STARTUP MOV AL,FIVE ADD AL,3 ADD AL,30H MOV DL,AL MOV AH,2 INT 21H

汇编语言课程教学大纲

《汇编语言》课程教学大纲 一、课程的性质和任务 《汇编语言》是计算机及相关专业的一门专业必修课。 本课程教学应达到的基本要求是: 1、加深对于微机结构及其内部运行过程的理解。 2、掌握Intel80x86汇编语言的语法、程序结构,能读懂和编写汇编语言程序。 3、了解BIOS、MS—DOS的功能调用方法,并掌握和运用主要的功能调用。 4、了解PC机主要外设的工作原理及简单编程方法。 5、掌握汇编语言的编程、调试技术,能够以汇编语言为工具,解决一些实际问题。 二、课时分配 本课程教学总时数为72学时,4学分,具体课时分配见课时分配表。 课时分配表 三、 课题一:基础知识 数制及数制间的转换(二进制、八进制、十进制、十六进制数概念及相互转换);二进制数的算术、逻辑运算;计算机中数和字符的表示(数值数据:原码、补码、反码的表示,字符数据的表示,数据类型等)。 重点:进位计数制及转换,ASCII码表示,数值数据表示等。 课题二:IBM PC 计算机组织 微型计算机系统基本结构(硬件、软件);中央处理器(组成、寄存器组);存储器等。

重点:8086CPU内容结构、寄存器组,存储器的地址和内容,内存地址的分段。 难点:逻辑地址和物理地址。 课题三:寻址方式与指令系统 寻址方式、指令格式、8086/8088指令系统(数据传送、算术运算、逻辑运算和移位运算、控制指令等)。 重点内容:1、掌握8086/8088CPU的寻址方式。 2、掌握8086/8088的常用指令。 了解内容:8086/8088指令系统的特点。 课题四:汇编语言程序格式 程序结构(分段式、简化式);伪操作;汇编语言程序格式;汇编、连接和运行;程序的调试与DEBUG。 课题五:分支与循环程序设计 顺序程序设计;分支程序设计;循环程序设计;串处理。 重点内容:顺序、分支和循环程序基本方法,能编写、运行、调试简单的汇编语言程序。 课题六:子程序与宏指令 子程序的设计方法;子程序嵌套;子程序举例;宏汇编。 课题七:输入与输出程序设计 输入与输出指令;输入输出控制方式;中断控制方式;中断处理程序举例。 课题八:BIOS和DOS中断 BIOS中断调用;DOS中断调用;键盘I/O调用;显示器I/O调用;其它调用(发声和时间中断等调用);显示方式;字符显示缓冲区的组织;图形方式下的编程。 重点内容:掌握DOS和BIOS中断方法。 四:说明 1、教材与参考书:教材选用《汇编语言》人民交通出版社 参考书选用《IBM PC 汇编语言程序设计》清华大学出版社 2、其它要求: (1)、该课程平时作业以课后习题为内容,由任课教师自行选择,次数在五次以上。 (2)、根据实验内容,填写实验报告8次,实验成绩计入课程总评分中。 3、预修课程:《C语言程序设计》、《计算机电路基础》 《汇编语言》课程实验教学大纲 一、实验教学目的

汇编语言-王爽-完美高清版视频教程

汇编语言》-王爽-完美高清版-零基础汇编语言入门书籍PDF格式 同时按ctrl+要下载的地址既可下载对应的视频 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f61cb107c8 001第一章- 基础知识01 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6806f45b8 002第一章- 基础知识02 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6ec42d4d3 003第一章- 基础知识03 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6deb05ec4 004第一章-基础知识04 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6e51f6838 005第一章- 基础知识05 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f66edaf8d3 006第二章- 寄存器(CPU工作原理)01 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6d07e07b9 007第二章- 寄存器(CPU工作原理)02 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6d7f585a8 008第二章- 寄存器(CPU工作原理)03 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f639d8b3cf 009第二章- 寄存器(CPU工作原理)04 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6dcadbde6 010第二章- 寄存器(CPU工作原理)05 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6ea3f01c1 011第二章- 寄存器(CPU工作原理)06 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f65b96a06f 012第二章- 寄存器(CPU工作原理)07 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f682da085a 013第三章- 寄存器(内存访问)01 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6486e698 014第三章- 寄存器(内存访问)02 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6b7491d9f 015第三章- 寄存器(内存访问)03 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f622b7f9a7 016第三章- 寄存器(内存访问)04 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f64e2424b9 017第三章- 寄存器(内存访问)05 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6e5132d4d 018第三章- 寄存器(内存访问)06 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f655c10e86 019第三章- 寄存器(内存访问)07 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6b22e64e6 020第四章- 第一个程序01 下载地址:https://www.360docs.net/doc/a53866362.html,/file/f6812126a4

汇编语言-课程设计1

) 汇编语言课程实验报告 实验名称 课程设计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型数据转换为字符串,这样我们才能调用第一个程序将其打印出

汇编语言入门教程

汇编语言入门教程 2007-04-29 22:04对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK 出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样)。某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了。为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ……)。但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP、WINRAR…依次压迫,嘿嘿!)教程。大言不惭的说,看通本文,你完全可以“不经意”间在前辈或是后生卖弄一下DEBUG,很有成就感的,试试看!那么――这个接下来呢?――Here we go!(阅读时看不懂不要紧,下文必有分解) 因为汇编是通过CPU和内存跟硬件对话的,所以我们不得不先了解一下CPU和内存:(关于数的进制问题在此不提) CPU是可以执行电脑所有算术╱逻辑运算与基本I/O 控制功能的一块芯片。一种汇编语言只能用于特定的CPU。也就是说,不同的CPU其汇编语言的指令语法亦不相同。个人电脑由1981年推出至今,其CPU发展过程为:8086→80286→80386→80486→PENTIUM →……,还有AMD、CYRIX等旁支。后面兼容前面CPU的功能,只不过多了些指令(如多能奔腾的MMX指令集)、增大了寄存器(如386的32位EAX)、增多了寄存器(如486的FS)。为确保汇编程序可以适用于各种机型,所以推荐使用8086汇编语言,其兼容性最佳。本文所提均为8086汇编语言。寄存器(Register)是CPU内部的元件,所以在寄存器之间的数据传送非常快。用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086 有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常用于运算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:计数寄存器,常用于计数;DH&DL=DX:数据寄存器,常用于数据传递。为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。除了前面所提的寄存器外,还有一些特殊功能的寄存器:IP(Intruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程;SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS 段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。还有一个标志寄存器FR(Flag Register),有九个有意义的标志,将在下文用到时详细说明。

《汇编语言程序设计》课程教学改革与实践

144747 学科教育论文 《汇编语言程序设计》课程教学改革与 实践 1课程的现状 汇编语言不同于其它高级语言,必须要求编程人员有一定的硬件基础,如对CPU的结构、CPU与存储器等部件的数据传送过程必须要有基本的了解,这样才能学好这门课程。在教学过程中,我们发现学生对高级语言编程学习积极性高,对汇编语言课程缺乏兴趣,因为课程本身指令复杂,规定繁多,再加上学习汇编指令前对CPU的相关工作过程理解不透,导致学生厌学,又由于本课程面对的低年级学生只有高级语言的基础,习惯于高级语言的自然表达,初次接触计算机硬件知识心理上有恐惧感,更难以适应繁杂的低级语言。 针对本课程的特点,对教学内容、环节、过程等进行了精心设计,下面就教学方法的设计、实践教学方法、课程考核形式等方面进行的一系列改革进行详细探讨。 2教学方法设计改革

为了避免学生因指令复杂,规定繁多、难度大而对该课程产生畏惧的学习心理,教师有必要对教学内容进行合理组织,对教学过程进行精心的设计。 2.1利用FLASH技术,使教学难点容易理解 在多年的教学过程中,我发现学生在学习CPU结构这章节中,对介绍的CPU由哪些寄存器(名称、大小)构成,各个寄存器的含义,用途,CPU与存储器等部件的数据传送过程,会觉得很抽象,多数同学都是采用死记硬背的方式,这章节是第二章节的内容,也是能否学好该课程关键的一章,如果理解不深,这无疑为后续的学习,特别是寻址方式的学习埋下了隐患。 针对这个问题,教师有必要对教学过程进行精心的设计。 在这章节中我们利用FLASH技术,把各种寻址方式下传送指令的CPU与存储器等部件的数据传送过程以动画形式展现给学生,使得复杂,抽象的过程变得直观,学生理解比较容易,也加深了对寻址方式的记忆。 2.2对比法教学

汇编语言程序代码详细版

1.1 DATAS SEGMENT x db 6 y db 7 z db ? ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT dw 100 dup(0);此处输入堆栈段代码STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: push ds mov ax,0 push ax mov ax,datas mov ds,ax mov dl,x add dl,y mov cl,3 sal dl,cl sub dl,x sar dl,1 mov z , dl ;此处输入代码段代码 MOV AH,4CH INT 21H CODES ENDS END START 1.2DATAS SEGMENT x db 4 dup (0) y db 4 dup (0)

z db 4 dup (0) ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT dw 100 dup(0);此处输入堆栈段代码STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: mov x,12h mov [x+1],34h mov [x+2],56h mov [x+3],78h mov bl,78h mov y,34h mov [y+1],56h mov [y+2],87h mov [y+3],64h add bl,64h mov [z+3],bl mov bl,56h adc bl,87h mov [z+2],bl mov bl,34h adc bl,56h mov [z+1],bl mov bl,12h adc bl,34h mov z,bl

汇编语言程序的设计试卷与答案

汇编语言程序设计试卷 一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题1分,共20分) 1.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。 ① 无符号十进制数136 ② 带符号十进制数-120 ③ 压缩型BCD码十进制数88 ④ 8位二进制数-8的补码表示 2.指令指针寄存器是()。 ① IP ② SP ③ BP ④ PSW 3.当执行指令ADD AX,BX后,若AX的内容为2BA0H, 设置的奇偶标志位PF=1,下面的叙述正确的是()。 ① 表示结果中含1的个数为偶数 ② 表示结果中含1的个数为奇数 ③ 表示该数为偶数 ④ 表示结果中低八位含1的个数为偶数 4.完成将累加器AL清零,并使进位标志CF清零, 下面错误的指令是()。 ① MOV AL,00H ② AND AL,00H

③ XOR AL,AL ④ SUB AL,AL 5.下列指令执行后总是使CF=0,OF=0的是()。 ① AND ② NEG ③ NOT ④ INC 6.完成同指令XCHG AX,BX相同功能的指令或指令序列是()。 ① MOV AX,BX ② MOV BX,AX ③ PUSH AX POP BX ④ MOV CX,AX MOV AX,BX MOV BX,CX 7.设AH=0,AL=06H,BL=09H,执行指令 ADD AL,BL AAA 之后,其结果应是()。 ① AH=01,AL=05 ② AH=1 AL=15 ③ AH=0 AL=0FH ④ AH=0 AL=05 8.设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMUL BL”分别执行后OF,CF的值为

汇编语言版学生管理系统演示教学

汇编语言版学生管理 系统

汇编语言课程实习报告 实习题目学生成绩管理系统 学生姓名 班级(学号) 院系 指导老师 提交时间 成绩

目录 题目一:学生成绩管理系统 (4) 二、总体设计 (5) 程序主界面: (8) 主程序流程图 (13) 详细设计 (15) 菜单模块 (15) 输入模块 (16) 主程序代码 (18) 调试过程 (29) 总结: (32) 参考文献: (33)

题目一:学生成绩管理系统 基本功能: 1、输入学生各门功课成绩;(假设3门功课,每门功课有唯一编号) 2、对学生成绩记录进行查询检索(按学号、姓名) 3、能修改指定学号的学生成绩; 4、对学生成绩排序(按总成绩降序排列); 5、、统计指定学号的学生的平均成绩在屏幕上显示; 6、统计指定编号课程的平均成绩在屏幕上显示; 7、每门课程成绩分析:在屏幕上显示3门课程的各个分数段的学生人数;(分数段为:>=90;80~89;70~79;60~69;<=59) 8、退出系统功能

二、总体设计 功能结构图设计 依据程序的功能需求,描述该系统功能的结构图如下: 图1 系统功能结构图

student struc names db 18 dup ('$') maths dw? english dw? chinese dw? total dw 0 avg dw 0 student ends DATAS SEGMENT stu_array student 10 dup(<>) 构建了student结构体,在存储方面使得结构变得简单。insert proc near inc num scur1 0 altert mes7 scur 1 altert mes4 sub bh,bh mov bl,num bindec bx crlf mov ah,09 lea dx,mes int 21h sub ah,ah mov al,28d mul num mov si,ax scur 2 mov ah,0ah lea dx,stu_array[si].names sub bh,bh mov bl,stu_array[si+1].names mov stu_array[si+bx+2].names,'$' int 21h scur 3 call decibin mov stu_array[si].maths,bx add stu_array[si].total,bx scur 4 call decibin mov stu_array[si].english,bx add stu_array[si].total,bx

汇编语言程序设计习题集111

16.提示下列指令序列执行后的正确结果是( A )。 MOV BX,OFFFCH MOV CL,2 SAR BX,CL A.3FFFH B.0FFFH C.0FFFCH D.0FFF5H 19. 指令SCAS的寻址方式是()。 A 源操作数为寄存器寻址,目的操作数为寄存器间接寻址 B 源操作数为寄存器间接寻址,目的操作数为寄存器间接寻址 C 源操作数为寄存器间接寻址,目的操作数为寄存器寻址 D 源操作数为寄存器寻址,目的操作数为寄存器寻址 22. 下列指令中不合法的指令是(C)。 A IN AX, 03F8H B MOV BX, AX C REP CMPSB D SHR BX, CL 23. 下列指令中正确的是()。 A MOV SS, 2400H B MOV SS, [2400H] C MOV SS, DS D MOV SS, SP 24. 下列指令中正确的是(A)。 A XCHG AH, AL B XCHG AL, 20H C XCHG DS, AX D XCHG SP, [20H] 29. 下列程序段执行完后,BX寄存器中的内容是( C )。 MOV CL, 3 MOV BX, 0B7H ROL BX, 1 ROR BX, CL A 002DH B 00EDH C C02DH D 000DH 30. 执行下列程序: MOV AX, 0 MOV BX, 1 MOV CX, 100 A: ADD AX, BX INC BX LOOP A HLT 执行后的结果为:(AX)= ( C ),(BX)= ( ). A 5050,99 B 2500,100 C 5050,101 D 2550,102 35. 逻辑位移指令SHR用于(D),而算术位移指令SAR用于带符号数除2。

汇编语言程序设计试题

汇编语言程序设计试题 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.设SS=2050H,SP=0140H,则栈顶存贮单元的物理地址是( A ) A.20640H B.2063EH C.2063FH D.21900H 2.使用DOS功能调用时,子程序编号应放在( B ) A.AL B.AH C.AX D.任意指定 3.没有 ..语法错误的输出指令是( B ) P76 A.OUT AX,30H B.OUT DX,AL C.OUT AL,DX D.OUT 30H,AH 4.用MOV指令将十进制数89以非压缩BCD码格式送入AX,可使用的指令是( B ) A.MOV AX,89 B.MOV AX,0809H C.MOV AX,89H D.MOV AX,0809 5.设AX=8765H,DX=4321H,执行CWD指令后,DX中的内容是( B ) P117 A.4321H B.0FFFFH C.8000H D.0001H 6.设CL=05H,要获得CL=0AH,可选用的指令是( A) A.XOR CL,0FH B.NOT CL C.OR CL,0AH D.AND CL,0FH 7.假设执行ADD指令后AL=8CH,再执行DAA指令,AL中的值是( A ) A.92H B.0104H C.74H D.8CH 8.MOV AL,79H ADD AL,B1H 上面指令执行后,设置的标志位CF和ZF的值是( D ) A.CF=0,ZF=1 B.CF=l,ZF=1 C.CF=0,ZF=0 D.CF=1,ZF=0 9.TEST DL,55H P123 JZ NEXT NEXT:…… … 上述程序段,执行JZ指令时能产生转移的情况是( D ) A.DL>55H B.DL<55H C.DL=55H D.DL中第0、2、4、6位均为0 10.假设AL=28H, 执行ROL AL,1 指令之后的情况是( D ) P125 A.AL=14H, CF=1 B.AL=50H, CF=1 C.AL=14H, CF=0 D.AL=50H, CF=0 11. 98的BCD码是(B) A)10011001 B) 10011000 C) 10011010 D) 10001010 12. –0110110 的补码是(A) A) 11001010 B) 11001001 C) 10110110 D) 00110110

汇编语言程序的基本结构与组成

Generated by Foxit PDF Creator Foxit Software https://www.360docs.net/doc/a53866362.html, For evaluation only.
本章主要介绍了汇编语言程序的基本结构与组成,伪指令及其使用方法,DS O 功能调 用和 BO 功能调用,以及汇编语言程序设计的基本技术.本章还给出了汇编语言程序上 IS 机和调试的实例.通过该实例,可以了解汇编语言程序设计与开发的全过程.本章中介 绍的程序设计技术包括简单程序设计,分支程序设计,循环程序设计和子程序设计,每 种程序设计均给出了多个具体实例,并对设计思想进行了分析,提供了有价值的程序设 计技术和方法.使用这些技术和方法可以为 PC 机开发基于汇编语言的软件.
61汇编语言与汇编程序 .
611 汇编语言的基本概念 .. 1 .机器语言与汇编语言(ahn Lnug adAsml Lnug) Mcie agae n seby agae 计算机程序由一系列指令序列组成.计算机通过对每条指令的译码和执行来完成相应 的操作.指令必须以二进制代码的形式存放在内存中,才能够被计算机所识别和理解,并 加以执行.由二进制代码表示的指令称为机器指令,相应的程序称为机器语言程序. 机器语言程序由 0 二进制代码组成,不便于编程和记忆.由此产生了用指令助记符 ,1 表示的汇编语言指令,对应的程序称为汇编语言程序. 例 61 将 4 位二进制数转换为 ACI SI 码字符. 当数在 00B10B 对应的 ACI 00-01 时, SI 码为'0 '9;当数在 11B11B '- ' 00-11 时,对应的 ACI SI 码为'A 'F.设待转换的数 '- ' 据已在累加器 A 中(低 4 .88 汇编语言程序如下: L 位) 06 ADA,F N L0H CPA,A M L0H J NM B U ADA,7 D L0H NM U: ADA,0 D L3H RT E 对例 61 - 程序进行汇编以后, 得到 88 汇编指令对应的机器代码 06 (用十六进制数表示) , 如表 61 . 所示.在表 61 . 中,第一列表示机器代码存放的内存地址,该地址与机器所处的 环境有关;第二列表示 88 机器代码,每条指令的机器代码由一个或几个字节组成;第三 06 列表示汇编指令,由指令助记符和操作数组成.指令前可能有标号,表示该指令第一个字 节所在的地址. 表 61 汇编后的机器代码 . 地 址 机器代码 2 0 4 F 3 0 C A 7 0 2 2 0 0 4 7 0 3 4 0 C 3 对应的汇编指令 ADA,F N L0H CPA,A M L0H J NM B U ADA,7 D L0H NM ADA,0 U: D L3H RT E E8:00 3000 E8:02 3000 E8:04 3000 E8:06 3000 E8:08 3000 E8:0A 3000
2 .汇编语言与高级语言(sebyLnug adCmue-needn Lnug) Asml agae n optridpnet agae 从例 61 - 可见,汇编语言程序的基本单位仍然是机器指令,只是采用助记符表示,便 于人们记忆.因此汇编语言是一种依赖于计算机微处理器的语言,每种机器都有它专用的

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法 一、汇编源程序的建立 1. 使用工具 (1)EDIT,记事本等文本编辑软件,编辑源程序,保存为.asm文 件; (2)ASM,MASM汇编程序,对源程序进行汇编,生成.obj文件- 目标文件,以及调试用.LST-列表文件和.CRF-交叉引用表; (3)Link连接程序,对使用的目标文件和库文件进行连接,生 成.exe文件,同时调试用.map-地址映像文件; 如果源程序无语法错误,上述三步将生成可运行的.exe文件, 如果运行结果无误,则完成对汇编程序的编程,如果运行后结果存 在错误,需要进行调试。 (4)Debug调试程序,对.exe文件进行调试,修改,直到程序正 确。 图3 目标程序生成步骤图2. 编程过程 (1)用文本编辑软件,编写扩展名为.asm的源文程序文件。 (2)用汇编程序对编好的源文件进行汇编。 命令行:masm [*.asm] ↙ 如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称的目标文件.obj。 使用MASM50汇编程序进行汇编,输入命令行masm或者masm *.asm后,根据提示,输入文件名,在汇编没有错误的情况下,如屏幕所示:汇编程序可生成三个文件,*.obj,*.lst和*.crf。 *.obj-目标文件,用于连接生成可执行文件; *.lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于

调试; *.crf-交叉引用文件(可选),给出了用户定义的所有符号和对每个符号定义、引用的行号。 (3)目标文件的连接 命令行:link [*.obj] [*.obj] [*.lib] ↙ 连接程序,将多个目标程序及库文件,连接生成可执行的*.exe文件,同时可选择生成*.map文件。 *.map-地址映像文件,给出内存地址分配的有关信息。 下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成*.exe 文件。 (4)执行程序 执行*.exe文件,观察程序运行结果,如果存在错误,需要进行调试。调试工具DEBUG是针对汇编语言程序设计的一种调试工具,熟练使用DEBUG有助于汇编语言程序员对于逻辑错误的调试。 二、汇编程序的调试

汇编语言入门教程

汇编语言入门教程2007-04-29 22:04对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样)。某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了。为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ……)。但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP、WINRAR…依次压迫,嘿嘿!)教程。大言不惭的说,看通本文,你完全可以“不经意”间在前辈或是后生卖弄一下DEBUG,很有成就感的,试试看!那么――这个接下来呢?――Here we go!(阅读时看不懂不要紧,下文必有分解) 因为汇编是通过CPU和内存跟硬件对话的,所以我们不得不先了解一下CPU和内存:(关于数的进制问题在此不提) CPU是可以执行电脑所有算术╱逻辑运算与基本I/O 控制功能的一块芯片。一种汇编语言只能用于特定的CPU。也就是说,不同的CPU其汇编语言的指令语法亦不相同。个人电脑由1981年推出至今,其CPU发展过程为:8086→80286→80386→80486→PENTIUM →……,还有AMD、CYRIX等旁支。后面兼容前面CPU的功能,只不过多了些指令(如多能奔腾的MMX指令集)、增大了寄存器(如386的32位EAX)、增多了寄存器(如486的FS)。为确保汇编程序可以适用于各种机型,所以推荐使用8086汇编语言,其兼容性最佳。本文所提均为8086汇编语言。寄存器(Register)是CPU内部的元件,所以在寄存器之间的数据传送非常快。用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086 有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常用于运算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:计数寄存器,常用于计数;DH&DL=DX:数据寄存器,常用于数据传递。为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K 的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。除了前面所提的寄存器外,还有一些特殊功能的寄存器:IP(Intruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程;SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。还有一个标志寄存器FR(Flag

汇编语言习题与答案

汇编语言习题与答案 一、填空题:把答案填在题中横线上。 1.8位无符号整数的表示范围为0~255,写成16进制形式为00H~__________;8位有符号整数的表示范围为-128~+127,写成16进制形式为__________~__________。 2.8086/8088分段管理存储空间,但每段容量最大不超过__________。 3.逻辑地址为F000:100的存储单元,其物理地址是__________。 4.用来指示堆栈栈顶的偏移地址的是__________寄存器。 5.若要测试AL寄存器D4、D2、D0位是否都为0,则可使用__________指令语句(含操作数),以产生转移条件。这条指令执行后将利用标志位__________实现转移。 6.若定义:bdata db2dup(1,2,2dup(3),4),则dbata变量前5个单元从低地址到高地址的数据依次是__________。 7.假设varw是一个16位变量,则指令“mov varw,ax”的目的操作数的寻址方式是__________。 二、选择题:在每小题给出的四个选项中,只有一项是符合题目要求的,请把所选项前的字母填在题后的括号 内。 1.对汇编语言源程序进行翻译,形成OBJ文件的是 A.汇编程序 B.连接程序 C.编辑程序 D.调试程序[] 2.下列各个8位二进制数的补码中,真值最大的是 A.10001000 B.11111111 C.00000000 D.00000001[] 3.MASM语句中,表达常数不正确的形式是 A.01101001B B.A346H C.’A’ D.5600[] 4.如果SS=600H,则说明堆栈段物理地址起始于 A.60H B.600H C.6000H D.60000H[] 5.dw50dup(?)预留了存储空间的字节数是 A.25 B.50 C.100 D.200[] 6.下列指令中有操作数在代码段中的是 A.mov ax,34h B.add ax,bx C.inc word ptr[34h] D.cmp ax,[34h][] 7.假设AL=5,要使得AL=0FAH,应执行的指令是 A.not al B.and al,0fh C.xor al,0f0h D.or al,0fh[] 8.设置逻辑段应该采用的一对伪指令是 A.segment/ends B.start/end start C.proc/endp D.macro/endm[] 9.条件转移指令JNE条件是 A.CF=0 B.CF=1

汇编语言程序设计复习

知识点 第一章基础知识 (1)正负数的补码表示, 掌握计算机中数和字符的表示; eg.假设机器字长为8位,[+3]补=00000011B,[-3]补= 11111101 H 。 十六进制数0FFF8H表示的十进制正数为65528D,表示的十进制负数为-8D。 8位二进制数被看成是带符号补码整数时,其最小值是-128,最大值是 127 。 第二章80x86计算机组织 (1)中央处理机CPU的组成和80x86寄存器组,重点:专用寄存器,段寄存器 eg: IP寄存器中保存的是?代码段中的偏移地址FLAGS标志寄存器中共有几位条件状态位6位,有几位控制状态位2位,标志寄存器分为哪2类?陷阱标志,中断标志。 (2)存储单元的地址和内容每一个字节单元给以一个唯一的存储器地址,称为物理地址;一个存储单元中存放的信息称为该存储单元的内容。存储器地址的分段,(低位字节存放)低地址,(高位字节存放)高地址;实模式下逻辑地址、选择器和偏移地址;物理地址的表示段基地址加上偏移地址。 eg.如果SS=6000H,说明堆栈段起始物理地址是_____60000H___。 已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为__1420H______。 如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H . 第三章80x86的指令系统和寻址方式 与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址)。数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS 指令,与REPE/REPZ和REPNE/REPNZ联合工作的CMPS、SCAS指令)、控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断)。eg.【习题3.8】假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,

相关文档
最新文档