PC机启动引导过程程序设计概要

PC机启动引导过程程序设计概要
PC机启动引导过程程序设计概要

PC机启动引导过程程序设计

一、引论

PC机开机后,CPU被设定为执行FFFF:0单元处的指令,此处有一条跳转指令。CPU执行该指令后,转去执行BIOS中的硬件系统测试和初始化程序。

初始化程序将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址登记在中断向量表中。

硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。

如果设为从软盘启动操作系统,则int 19h将主要完成以下工作:

(1 控制0号软驱,读取软盘0道0面1扇区的内容到0:7C00

(2 将CS:IP指向0:7C00

软盘的0道0面1扇区中装有操作系统引导程序。int 19h将其装入到内存0:7C00处后,设置CPU从0:7C00开始执行此处的引导程序,操作系统被激活,控制计算机。

如果在0号软驱中没有软盘,或发生软盘I/O错误,则int 19h将主要完成以下工作:

(1 读取硬盘C的0道0面1扇区的内容到0:7C00

(2 将CS:IP指向0:7C00

由以上描述可知,若我们想要控制引导过程,只需:

(1 编写程序

(2 将该程序代码写入软盘或硬盘C的0道0面1扇区。

因为以上工作会破坏软盘或硬盘原有数据,因此本次实验,我们选择软盘存放我们自己的启动程序。

二、实验任务

本次实验的任务是编写一个可以自行启动计算机,不需要在现有操作系统环境中运行的程序。

该程序功能如下:

(1 列出功能选项,让用户通过键盘进行选择,界面如下:

1、Reset PC ;重新启动计算机

2、Start System ;启动现有的操作系统

3、Clock ;进入时钟程序

4、Set Clock ;设置时间

(2 用户输入“1”后重新启动计算机。(提示:考虑FFFF:0单元

(3 用户输入“2”后引导现有的操作系统。(提示:考虑硬盘C的0道0面1扇区

微机原理课程设计报告

微型计算机技术课程设计 指导教师: 班级: 姓名: 学号: 班内序号: 课设日期: _________________________

目录 一、课程设计题目................. 错误!未定义书签。 二、设计目的..................... 错误!未定义书签。 三、设计内容..................... 错误!未定义书签。 四、设计所需器材与工具 (3) 五、设计思路..................... 错误!未定义书签。 六、设计步骤(含流程图和代码) ..... 错误!未定义书签。 七、课程设计小结 (36)

一、课程设计题目:点阵显示系统电路及程序设计 利用《汇编语言与微型计算机技术》课程中所学的可编程接口芯片8253、8255A、8259设计一个基于微机控制的点阵显示系统。 二、设计目的 1.通过本设计,使学生综合运用《汇编语言与微型计算机技术》、《数字电子技术》等课程的内容,为今后从事计算机检测与控制工作奠定一定的基础。 2.掌握接口芯片8253、8255A、8259等可编程器件、译码器74LS138、8路同相三态双向总线收发器74LS245、点阵显示器件的使用。 3.学会用汇编语言编写一个较完整的实用程序。 4.掌握微型计算机技术应用开发的全过程,包括需求分析、原理图设计、元器件选用、布线、编程、调试、撰写报告等步骤。 三、设计内容 1.点阵显示系统启动后的初始状态 在计算机显示器上出现菜单: dot matrix display system 1.←left shift display 2.↑up shift display 3.s stop 4.Esc Exit 2.点阵显示系统运行状态 按计算机光标←键,点阵逐列向左移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标↑键,点阵逐行向上移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标s键,点阵停止移动并显示当前字符。 3.结束程序运行状态 按计算机Esc键,结束点阵显示系统运行状态并显示“停”。 四.设计所需器材与工具 1.一块实验面包板(内含时钟信号1MHz或2MHz)。 2.可编程芯片8253、8255、74LS245、74LS138各一片,16×16点阵显示器件一片。

微机原理子程序设计

实验三子程序设计 1、实验目的: (1)熟悉汇编语言的编辑、汇编、连接、运行的全过程。 (2)了解汇编语言的程序结构、学习调用过程实现输入输出及用INCLUDE 命令包含文件的方法。 (3)子程序设计 2.实验步骤: (1)用编辑软件记事本或EDIT 编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序TASM 汇编上述的汇编语言源程序,形成目标代码文件。 (扩展名为OBJ) (3)用连接程序TLINK连接目标代码文件,形成可执行文件。(扩展名为EXE) (4)运行可执行文件。观察执行结果,以验证其正确性。 3.实验内容: (1)从键盘上输入若干个十进制数(-32767

again1: mov ax,[si] cmp ax,[si+2] jle next1 xchg ax,[si+2] xchg ax,[si] next1: add si,2 loop again1 mov cx,di loop again2 mov ah,9 lea dx,out_message int 21h mov cx,count ;输出(升序) lea si,array again3: mov bx,[si] call write call dpcrlf inc si inc si loop again3 mov ax,4c00h int 21h INCLUDE out_B_D.ASM INCLUDE in_D_B.ASM END (2)从键盘上输入若干个十进制数(-32767

汇编语言程序设计报告

实验一: 一、实验目的: 1. 学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2. 了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3. 掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4. 掌握DOS系统功能调用的基本方法。 二、实验原理 通过调用(INT 21H)表中的01h号功能号从键盘输入一个字符并回显到视频显示器上 三、实验内容及算法流程、源程序清单 实验内容:编写程序,从键盘输入一个字符并回显到视频显示器上。 源程序清单: 实验1.asm 实验1.obj 实验1.exe code segment assume cs:code start: mov ah,1 int 21h mov ah,4ch int 21h code ends end start 实验二:编写程序,显示一个字符Q 一、实验目的 1、学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2、了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3、掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4、掌握DOS系统功能调用的基本方法。 二、实验原理 通过调用(INT 21H)表中的02h号功能显示输出一个字符Y。

三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 编写程序,显示输出一个字符Q。 源程序清单: 实验2.asm 实验2.obj 实验2.exe code segment assume cs:code start: mov ah,02 mov dl,'Q' int 21h mov ah,4ch int 21h code ends end start 实验三:编写程序,在屏幕上显示输出“I love DOTA” 一、实验目的 1、学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2、了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3、掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4、掌握DOS系统功能调用的基本方法。 二、实验原理 考察通过调用(INT 21H)表中的0ah号功能显示输出字符串 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 编写程序,在屏幕上显示输出‘I love DOTA。 源程序清单: 实验3.asm 实验3.obj 实验3.exe data segment buf db 'I love DOTA.$'

程序设计技术复习提纲

《程序设计技术B》复习提纲(2013) 第1章C语言与程序设计 1.学习“C语言程序设计”主要包括哪两个方面? 语法规则、程序设计方法; 2.计算机解题的过程大致分为哪四个阶段? 分析问题、设计算法、编写程序、运行验证; 3.什么是算法?算法有哪些表示方法?传统流程图的常用图形符号有哪些? 4.结构化程序设计思想的要点是什么?有哪三种基本结构? 自顶向下、逐步求精;顺序、选择、循环; 5.习题一:一题 第2章C语言基本概念 6.C程序的构成?C语句以什么结束?如何为程序加注释? 一个main函数和若干其它函数; 7.何谓关键字?ANSI C定义的关键字有哪些? 语言中被赋予特定含义的单词符号;32个…… 8.什么是标识符?标识符的命名规则? 程序中的变量、符号常量、数组、函数、类型、文件等对象的名字;在C语言中,标识符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线; 9.C语言的基本类型有哪几种?写出类型名? 整型、浮点型、字符型、枚举型;int、float、char、enum; 10.什么是常量?什么是变量?C语言中有哪四种常量,如何表示? 整数常量、浮点数常量、字符常量、字符串常量;

11.C语言的变量要“先定义,后使用”,如何定义变量?变量有哪3个要素? 变量名、存储单元、变量值; 12.掌握常用的运算符(算术运算符、赋值运算符、逗号运算符、条件运算符、关 系运算符和逻辑运算符)的运算优先级和结合性以及表达式的计算过程? 13.了解混运算时数据类型的转换? 14.习题二:一题 第3章程序控制结构 15.C语言语句可以分为哪五种类型? 达式语句、函数调用语句、控制语句、复合语句、空语句; 16.赋值语句的一般形式?赋值语句的功能?什么情况下要使用赋值语句? 17.掌握字符输入输出函数:getchar()和putchar()的使用? 18.掌握格式输入输出函数:scanf()和printf()的使用?格式说明:%d、%f、%c 和%s的含义? 19.掌握if语句和switch语句的语法结构和使用? 20.掌握while语句、do-while语句和for语句的语法结构和使用? 21.了解break语句和continue语句的作用? 22.例题:3-17、3-19、3-21、3-26、3-31 23.习题三:一、1,2,3,4,6,7,9,11,12,14,15,20,21,22,24,26,27,28,29,30二、 1,2,3,4,6,7,10,12,15,20三、1,4 四、1,4,6,8 第4章数组和字符串 24.什么是数组?程序设计中数组的作用?数组下标是从几开始的整数? 25.掌握一维数组和二维数组的定义和初始化方法? 26.掌握字符数组初始化和使用?(字符数组主要用来存储字符串)

微机程序设计代码例题

一、简单程序设计 简单程序设计是没有分支,没有循环的直线运行程序,程序执行按照IP内容自动增加的顺序进行。 例1 利用查表法计算平方值。已知0 ~ 9的平方值连续存在以SQTAB开始的存储区域中,求SUR单元内容X的平方值,并放在DIS单元中。假定0≤X≤9且为整数。 分析:建立平方表,通过查表完成。 STACK SEGMENT DB 100 DUP(?) STACK ENDS DATA SEGMENT SUR DB ? DIS DB ? SQTAB DB 0,1,4,9,16,25,36,49,64,81 ; 0~9的平方表DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA BEGIN:PUSH DS MOV AX,0 PUSH AX ;保证返回DOS, MOV AX,DATA MOV DS,AX ;为DS送初值 LEA BX,SQTAB ;以下程序部分完成查表求平方值 MOV AH,0 ;亦可用查表指令完成(如下程序段) MOV AL,SUR ;AL=X LEA BX, SQTAB ADD BX,AX ;MOV AL, SUR MOV AL,[BX] ;XLAT MOV DIS,AL ;MOV DIS, AL CODE ENDS END BEGIN 例2 已知Z=(X+Y)-(W+Z),其中X,Y,Z,W均为用压缩BCD码表示的数,写出程序。 分析:这也是一种典型的直线程序,在这里要注意是BCD数相加,要进行十进制调整。具体程序如下:

MOV AL ,Z MOV BL ,W ADD AL ,BL DAA MOV BL ,AL ; BL=(W+Z ) MOV AL ,X MOV DL ,Y ADD AL ,DL ; AL=(X+Y ) DAA ;十进制调整 SUB AL ,BL ; AL=(X+Y )-(Z+W ) DAS ;十进制调整 MOV Z ,AL ;结果送Z 例2 利用表实现分支 根据AL 中各位被置位情况,控制转移到8个子程序P1~P8之一中去。转移表的结构如表3-2所示。 分析:对于这种程序关键要找出每种情况的转移地址,从图中可见 表地址=表基地址+偏移量, 而偏移量可由AL 各位所在位置*2求得。 流程图见图3-3。 DATA SEGMENT BASE DW SR0,SR1,SR2,SR3, SR4,SR5,SR6,SR7 DATA ENDS CODE SEGMENT ASSUME CS :CODE ,DS :DATA ,ES :DATA BEGIN : PUSH DS XOR AX ,AX PUSH AX MOV AX ,DATA 图3-3 流程图 MOV DS ,AX LEA BX ,BASE ;表头送BX 表3-2 子程序R1—R8的入口地址表 P1 子程序R1的入口偏移地址 P2 子程序R2的入口偏移地址 P3 子程序R3的入口偏移地址 …… …… ……. …… P7 子程序R7的入口偏移地址 P8 子程序R8的入口偏移地址

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

江苏省苏州市第二十六中学八年级信息技术《程序设计简介》教案 苏教版

苏州市第二十六中学备课纸第 页 教学课题程序设计简介 教学目标 1、了解程序设计语言的分类。 2、掌握程序设计的过程。 3、了解程序与软件的关系。 教学准备 网络教室、课件 集体备课意见和主要参考资料 教学参考书 页边批注苏州市第二十六中学备课纸第页

教学过程 页边批注 〖讲 授新课〗 一、程序设计语言的分类 程序设计语言可以分为机器语言、汇编语言和高级语言三种类型。 1、机器语言 例:51+53 由10110000 00110011 10110010 00110101 00000000 11000010六个二进制指令代码所组成。 优点:机器语言执行效率高。 缺点:记不住、难理解、效率低、不易维护。 2、汇编语言 例:51+53 指令代码为:MOV AL,33H MOV DL,35H ADD DL AL 优点:易理解。 缺点:大型程序难以开发,依赖于具体计算机。 3、高级语言 例:51+53 Let a=51 Let b=53 Let s=a+b Print s 目的:克服汇编语言的缺陷,提高编程和维护的效率 特点:接近人们日常使用的自然语言(主要是英语)容易理解、记忆和使用可在不同计算机上 通用对使用的符号、词汇、语法和语义等各种语言成分都有严格的规定 意义:使程序设计的难度降低,导致了计算机的发展进入新的阶段。 常用高级语言种类:适用于数值计算的FORTRAN语言 易学好用的BASIC语言 适用于编写系统软件的C语言。 解释与编译:用高级语言编写的程序必须先翻译成二进制代码,计算机才能识别和执行, 具体的翻译有解释和编译两种方式。 二、程序设计的过程 确定算法编制程序调试程序 举例:编写计算半径为8.5cm圆的周长和面积的程序。 步骤1、任务分析 利用求圆周长公式L=2πR和求圆面积公式S=πR2 编写程序。

微型计算机系统课程设计

微型计算机系统课程设计 题目:基于AT89C51单片机的波形发生器设计 课程设计的目的 1.进一步熟悉和掌握51单片机的结构及工作原理及其汇编语言;2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。3.通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了解相关电路参数的计算方法。 4.掌握protel, keil等相关软件的应用; 5.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 6。通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应工作打下基础。一.设计内容 设计内容包括:硬件和软件设计两部分,硬件要求设计原理图,软件要求相应程序设计以及调试。 (三)简易波形发生器:采用0832芯片实现,实现矩形波、锯齿波、三角波等波形;幅值分为5V,2.5V;频率分为50Hz,100Hz; 显示部分为LED动态显示设计;并有键盘设计; 硬件设计: 1)最小系统设计:AT89C51单片机为本设计的控制器,包括外扩 ROM,RAM各32 M(其大小由设计者自己设计),系统时钟电路、 复位电路等构成的最小系统; 2)接口电路的设计:设计者扩展一个并行接口〔8155或8255〕, 键盘设计由设计者根据需要设计键盘的数量,显示采用LED显示,

显示电路也根据显示的内容设计; 3)有开机显示状态(如显示888888);显示可选择幅值,波形序号; 4) 采用0832芯片实现; 5)在完成基本设计功能同时可以增加功能。 软件设计:1)主程序设计(包括初始化芯片,定时器,中断以及SP指针等); 2)各功能子程序设计,矩形波、锯齿波、三角波等波形产生子程序、键盘子程序\显示子程序设计,定时,中断程序等; 三程设计具体要求 a) 原理图设计 1.原理图设计要符合项目的工作原理,连线要正确。 2.图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明。3.原理图要完整,CPU,外围器件,扩器接口,输入/输出要一应俱全。 b) 程序调试 1.根据要求,将总体项能分解成若干个子功能模块,每个功能模块完成一个特定的功能。 2.根据总体要求及分解的功能模块,确定各功能模块之间的关系,设直出完整的程序流程图。 c) 设计说明书(手写) 1.设计的主要功能及意义 2 原理图设计及原理图设计说明 protel图形式完成硬件设计,并简要说明设计目的,原理图中所使用 的元器件功能;在本设计中的作用,各器件的工作过程及顺序。 3.程序设计说明 对程序设计总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较详细的描述。 4.体会及调试过程遇到的问题 5.参考文献 四设计完成时间(第十五周—十六周) 两周时间:1)方案论证1天

汇编语言程序设计报告模板总结模板计划模板.docx

《汇编语言》课程设 计报告 专业计算机科学与技术 学生姓名张竹青 班级Z计算机 151 学号1560704132 任课老师王志宏 完成日期2017年12月29日

目录 1 概述 (1) 1.1 设计目的 (1) 1.2 设计内容 (1) 2 系统需求分析 (1) 2.1 系统目标 (1) 2.2 主体功能 (1) 2.3 开发环境 (2) 3 系统概要设计 (2) 3.1 系统的功能模块划分 (2) 3.2 系统流程图 (3) 4 系统详细设计 (4) 4.1 界面设置 (4) 4.2 选择算法设置 (4) 4.3 十进制转换设置 (4) 5 测试 (5) 5.1 测试方案 (5) 5.2 测试结果 (5) 6 小结 (6) 参考文献 (7)

实现加减乘除四则运算的计算器 1 概述 1.1 设计目的 使用汇编语言,通过实现简单计算器的一般功能,如加、减、乘、除的计算来 了解并掌握 DOS系统功能的调试方法,学会画出编程的具体流程图,同时在程序 设 计过程中熟悉各种指令的应用和意义,以及如何进行上机编辑、汇编、连接和调试。 本课程设计也是对课堂上所学的基本理论知识和程序设计方法的巩固和深化, 提高我们的编程思想、分析问题和解决问题的综合应用能力,能够编写较复杂的应 用程序,最终达到熟练地掌握结构化程序设计技术和编写汇编源程序的基本方法的 目的。 1.2 设计内容 设计一个能实现加、减、乘、除计算的程序,要求该程序接受从键盘输入的十 六进制数,当程序执行时需在文件名后直接跟上计算表达式,每当读到一个有效的 表达式时对表达式进行相应的运算后,输出用十进制数或十六进制数表示的运算结果,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5 2系统需求分析 2.1 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单的加减乘除四则运算的 计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则 运算。具体功能如下: (1)调用中断把要做运算的两个数输入到屏幕上并用程序将他们存储起来 (2)判断用户所输入的运算是四则运算中的哪一种运算 (3)判断运算过程中是进位还是借位 (4)选择用何种输出方式 (5)实现清屏 2.2 主体功能 要求该程序接受的是十六进制数,执行相应的计算后,计算结果以十六进制数 或十进制数输出。本设计的使用说明如下: (1)按照提示选择数字 1,2,3,4 (2) 1: ADD 加法 (3) 2: SUB 减法 (4) 3: MUL 乘法

微机原理实验报告——分支程序设计

实验三 分支程序设计 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。 二、软硬件环境 1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 、DEBUG 、LINK 和EDIT 等应用程序。 三、实验涉及的主要知识单元 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。下面就有符号数转移指令来了解在汇编语言程序设计方法。 四、实验内容与步骤 1.实验内容 (1)编写计算下面函数值的程序: ?? ? ??<-=>=0,10,00,1x x x y 设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量的 数据 (2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。 2.实验步骤 a.实验流程图 (1)计算函数值的流程图

b.编写程序 (1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ? DATA ENDS STACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AL,XX CMP AL,0 ;把AX 与0比较 JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0AL 则1=Y JMP EXIT EQUPR: MOV Y,0 ;0=AL 则0=Y EXIT: MOV AL,Y RET CODE ENDS END START

微型计算机原理王忠民课后参考答案汇编语言程序设计

1.画图说明下列语句所分配的存储空间及初始化情况。 (1) 42H59H54H45H00HEEH00H07H01H02H01H02H07H00H07H01H02H01H02H07H00H07H01H02H0 1H02H07H (2)00H00H01H00H02H00H00H00H01H00H02H00H00H00H01H00H02H00H00H00H01H00H02H00H 00H00H01H00H02H00H07H00HFBHFFH59H42H45H54H02H56H 2.(PLENTH)=22H;它表示数据与的长度 3.(L)=06H 4.(1)MOVBXOFFSETLNAME (2)MOVSIWORDPTRCODE_LIST (3)MOVCODE_LENGTHEQU$-CODE_LIST 5.(AX)=10 (BL)=10 (CL)=1 6.(1).(AX)=1 (2).(AX)=2 (3).(CX)=20 (4).(DX)=40 (5).(CX)=1 7.是说明下列指令中那些需要加上PR伪指令定义符。 (1).不需要(2)不需要(3)SUB[BX],WORDBYTE2(或其他形式)(4).MOVCL,BYTEPTRWVAL 8.编一宏定义BXCHG,将一字节高4位和低4位交换。 BXCHGMARCOOPR MOVAL,OPR MOVCL,04H ROLAH,CL RORAL,CL ORAH,AL MOVOPR,AH ENDM 9.已知宏定义,展开宏调用:OPPBH,BL,CH,CL +MOVAX,BX +XCHGAL,CL +MOVAX,BL +XCHGAL,CH +MOVBL,AL 10.将寄存器中的16位数分成四组,每组四位,分别存放在AL,BL,CL和DL中。 MOVCH,04H MOVCL,AL MOVDL,AL SHRCL,CH ANDDL,AH MOVAL,AH MOVBL,AH SHRAL,CH

汇编语言程序设计大纲

《汇编语言程序设计》课程教学大纲 课程编号: 0910218 课程名称:汇编语言程序设计 英文名称:Assemble Language Programming 课程类型: 专业基础课 总学时:48 讲课学时:48 实验学时:0 学分:3 适用对象: 计算机科学与技术、网络工程、信息安全及相关专业 先修课程:数字逻辑与数字系统设计、数据结构 一、课程性质、目的和任务 汇编语言程序设计是计算机科学与技术、网络工程、信息安全等专业的必修课,是进一步学习操作系统、编译、接口与通信等专业课的基础。通过本门课程的学习,学生可以加深对计算机工作原理的理解,有助于促进后续课程的学习。同时,汇编语言作为一种计算机语言工具,对于学生将来从事计算机的研究与应用是必需的,有助于提高学生的程序设计能力。 二、教学基本要求 通过本课程的学习,要求学生了解或掌握:模型机的基本结构、工作原理、寻址方式及指令系统,用汇编语言编写顺序、分支、循环、子程序、宏汇编语言程序等各种程序的技术。学会编写输入/输出程序和中断服务程序,掌握利用系统的功能调用进行程序设计的方法。掌握汇编过程和汇编程序的原理,能够正确熟练地使用编辑、汇编、链接和调试等各种软件工具。 三、教学内容及要求 1. 模型机结构。模型机系统的概述,存储器、中央处理器及外部设备与接口的基本概念、工作原理及编程方法。 2. 指令系统与寻址方式。模型机的寻址方式,机器语言指令格式,汇编语言指令系统。 3. 汇编语言程序格式。汇编程序的功能,伪操作,汇编语言程序格式。 4. 循环与分支程序设计。程序流程图的画法;分支与循环程序的设计思想与方法,重点介绍双重循环的程序设计和通过比较——判断、跳转表等方法进行分支程序设计。 5. 系统功能调用。介绍操作系统提供的BIOS、DOS等系统功能调用,学习通过功能调用进行程序设计的方法。 6. 子程序设计。子程序的设计方法,嵌套与递归子程序,堆栈在其中的应用。 7. 高级汇编语言技术。宏汇编、重复汇编、条件汇编的基本概念及其程序设计。 8. 输入输出及中断程序设计。I/O设备的数据传送方式,程序直接控制I/O方式和中断程序设计。 9. 软件工具。汇编程序、文本编辑程序、链接程序、调试程序的基本功能及汇编语言程序编写、调试、运行中的使用方法。 四、实践环节 见“汇编语言程序设计综合实验”。

微机显示程序设计(1)

微机实验报告 (1) 实验程序: title draw--program to draw on screen with read_c equ 0 key_rom equ 16h up equ 48h down equ 50h right equ 4dh left equ 4bh block equ 0dbh esc1 equ 1bh video segment at 0b800h wd_buff label word v_buff db 25*80*2 dup(?) video ends pro_nam segment main proc far assume cs:pro_nam,es:video start: push ds sub ax,ax push ax mov ax,video mov es,ax mov cx,80*25 mov bx,0 clear: mov es:[wd_buff+bx],0700h inc bx inc bx loop clear mov ch,12d mov cl,40d get_char: mov ah,read_c int key_rom cmp al,esc1 jz exit mov al,ah cmp al,up jnz not_up

dec ch not_up: cmp al,down jnz not_down inc ch not_down: cmp al,right jnz not_right inc cl not_right: cmp al,left jnz lite_it dec cl lite_it: mov al,160d mul ch mov bl,cl rol bl,1 mov bh,0 add bx,ax mov al,block mov es:[v_buff+bx],al jmp get_char exit: ret main endp pro_nam ends end start

汇编语言程序设计课程教学大纲.

《汇编语言程序设计》课程教学大纲 二、课程性质与教学目标 《汇编语言程序设计》是计算机科学与技术专业一门重要的基础课,是必修的核心课程之一,是"操作系统"和"微机原理和接口技术"等其它核心课程必要的先修课,而且对于训练学生掌握程序设计技术,熟悉上机操作和程序调试技术都有重要作用。因此该课程在整个教学计划中占有重要地位。 本课程的目的和要求是: 1、应使学生掌握8086/8088宏汇编语言程序设计的基本方法和技巧,能够运用8086/8088宏汇编语言编写应用程序。提高学生分析问题、解决问题的能力以及实际动手能力。 2、应使学生基本掌握汇编语言程序设计的基本理论,方法和技巧,正确地使用结构化、模块程序设计技术。注意培养学生良好的程序设计风格。 3、应使学生比较熟练地使用调试工具DEBUG调试8086/8088汇编语言程序。注意提高学生的调试能力。 4、注意与前后相关课程的关系。使学生对前导课程有进一步的理解,同时为学习后继课程打好基础。 三、教学内容及基本要求 第一单元基础知识 [知识点] 汇编语言的基本概念、数据的表示和类型、几种基本的逻辑运算、Intel 8088/8086微处理器基本概念、存储器分段和地址的形成、

[教学内容] 1.以二进制存在的机器语言。计算机内部数的存储及运算也都是采用二进制。 2.制数的值由1所在位置的权来确定。 3.进制是一种很重要的短格式记数法,它把二进制数每4位分成一组,分别用0-9和 A-F来表示0000-1111。反之,16进制数的每一位用四位二进制表示,就是相应的二进制数。 4.十进制转换为二进制的方法主要有降幂法和除法。计算机十化二程序中采取下面的算法: 5.标志位OF=1表示带符号数的运算结果无效。CF=1表示无符号数运算结果无效。 6.计算机中的字符数据用ASCⅡ码表示,一个字符在存储器中占用一个字节(8位二进制码)。 7.BCD码是一种用二进制编码的十进制数,又称二-十进制数或8421码,它用4位二进制数表示一个十进制数码。BCD码有压缩和非压缩两种格式,压缩的BCD码用4位二进制数表示一个十进制数位,如95 表示为1001,0101。非压缩的BCD码用地位二进制数表示一个十进制数位。如95 表示为00001001 00000101。 8.两种类型的内部存储器是ROM(只读存储器)和RAM(随机存储器)。存储器按字节编址,存储器地址一般用16进制的无符号数表示。 9.字数据在存储器中存放的顺序为高地址字节放高8位,低地址字节放低8位。 10.AX、BA、CA、和DX是通用寄存器,每个通用寄存器可作两个8位寄存器使用(如AH和AL)。 11.一个20位的物理地址可表示成段地址:偏移地址。计算存储器单元的物理地址,可将段地址乘以10H,再加上偏移地址。 物理地址=(段地址×10H)+偏移地址 12.段寄存器CS、SS、DS和ES分别寄存代码段、堆栈段、数据段和附加段的段地址。 13.变址寄存器SI和DI一般指示数据段内单元的地址,有时也可作为数据寄存器用。 14.16位的标志寄存器个包括6个状态标志(SF、ZF、PF、CF、AF、OF)和3个控制标志(DF、IF、TF)。(CF、AF、SF、ZF和OF反映了算术运算以及移位、循环、逻辑等操作的结果状态。 [重难点] 1.教学重点 1.汇编语言的基本概念 (1)机器语言,汇编语言,汇编程序,汇编语言源程序,目标程序,目标代码,可执行程序。 (2)汇编语言的特点 (3)为什么要学习汇编语言,汇编语言的应用场合。 2.数据的表示和类型 (1)数值数据的表示,符号扩展,数值数据的表示范围,BCD码,不同数据之间的转换。 (2)非数值数据类型:字节、字、双字等。 3.几种基本的罗辑运算 “与”、“或”、“非”、“异或” 4.Intel 8088/8086微处理器基本概念 (1)8086/8088基本结构:执行单元EU,总线接口单元BIU,指令的执行次序。

微机原理实验五输入与输出程序设计

实验六输入与输出程序设计 一、实验目的 1?掌握常用DOS中断调用的功能以及在应用程序中的使用方法。 2?学习键盘输入和屏幕输出的基本方法。 3?宏指令、子程序在应用程序屮的使用。 4?汇编语言程序设计的调试与完善。 二、设计指标与实验要求 1.设计内容 本实验要求设计完成:①屏幕输出提示(如〃Want in put (Y/N)? ”),若键入N则结束程序返回操作系统;键入Y则转2步;键入的是其它字母则回①步。②换行后输出提示(如"please in put a strings :”),且在该提示后键入一字符串(输入到输入缓冲区) ③换行后输出提不(如"your in putt ing is :”),在该提不后输出由②步输入的字符串。 ④换行后输出提示“Want continue (Y/N)? ” ,若键入Y则转②步;键入N则结束程序返回操作系统;其它字母则回第④步。 2 ?设计要求 ①按屏幕提示要求输入,从屏幕上获得正确结果。 ②把程序屮常用的屮断调用定义成宏指令(至少定义2个)。 ③字符串回显部分设计成子程序,可以选择用21H中断的2号或9号功能来实现,应能显示由 主程序指定的任一字符串。要注意这两种方法实现的设计过程是不同的。 采用2号功能的,子程序输入参数为“回显字符串地址”和“回显字符数”;采用 9号功能的,子程序输入参数为“回显字符串地址”。 ④屏幕的提示信息显示格式尽量做到兼顾美观。

3 .实验步骤 ①?选用合适的程序文本编辑软件编辑源程序, 并为文件取以.ASM为扩展名的文件存盘。 ②?用宏汇编软件MASM对源程序文件进行汇编,若有错误,根据提示(行号,错误类型)回源程序文件中修改。 ③?用LINK对由MASM匚编后产生的目标文件做连接,生成可执行文件;若有错误(同上)回步骤1修改源程序文件。 ④?对存在问题的程序,用CV调试程序,检察运行结果,并调试程序。 ⑤?反复验正程序的正确性。 ⑥?完善、改进所设计的程序算法、功能、界面、或性能等指标。 四、思考题 1.输入串若以指定字符(非回车)做结束标志时的输入部分应如何改写。 2.若为应用程序添加启动时的密码检验功能,密码输入时采用什么屮断功能比较合适? 3.如何为应用程序添加字母的大小写转换功能? OUTPUT MACRO MOV AH, 9 INT 21H EXDM INPUTS MACRO MOV AH, 10 INT 21H ENDM DATA SEGMENT BUF1 DB Odh, Oah,,Wa nt in put(Y/N)?$, BUF2 DB Odh,Oah, 5 please in put a stri ngs:$' BUFIN DB 20,?,20 DUP(?) BUF3 DB Odh,Oah, ' your in putt ing is:$' BUF4 DB Odh, Oah,,Wa nt contin ue(Y/N)?$,

程序设计技术总复习

“程序设计技术”总复习 一、Simple Choice Questions((每题2分,16题共32 分) 1. Which of the following function declarations are illegal? a. void t1(int x, int y = 0, int z); b. void t4(int x = 0, int y = 0, int z = 0); c. void t2(int x = 0, int y = 0, int z); d. void t3(int x, int y = 0, int z = 0); e. a and c Key:e # 2. What is the printout of the following code? #include using namespace std; void f(int &p1, int p2) { p1++; p2++; } int main() { int x1 = 1; int x2 = 1; f(x1, x2); cout <<"x1 is "<< x1 <<" x2 is "<< x2; } a. x1 is 2 x2 is 2 b. x1 is 1 x2 is 2 c. x1 is 1 x2 is 1 d. x1 is 2 x2 is 1 Key:d # 3. The following program invokes p() three times. What is the printout from the last call of p()? #include using namespace std;

微机-程序设计

1.从BUFF单元起有一个字符串(长度小于65535),以'*'结束,编写一个完整程序求该字符串长度存入LENT单元,并统计字符串中含有大写英文字符的个数并存入COUNT单元。要求源程序具备必要的伪指令和段说明。 1.DATA SEGMENT INC CX BUFF DB 'ABCD…….*'CMP AL,'A' LENT DW ?JC NEXT COUNT DW ? CMP AL,'Z' DATA ENDS JNC NEXT CODE SEGMENT INC DX ASSUME CS:CODE,DS:DATA NEXT:INC BX START:MOV AX,DATA JMP LP MOV DS,AX DONE:INC CX LEA BX,BUFF MOV LENT,CX MOV CX,0 MOV COUNT,DX MOV DX,0 MOV AH,4CH LP: MOV AL,[BX] INT 21H CMP AL,'*' CODE ENDS JZ DONE END START 2.有一带符号8位数X存于DAT单元.编一个程序段判断该数,若x小于0则将0FFH送MARK单元;若X等于0则将MARK+1单元置0FFH;若X大于0则置MARK+2单元为0FFH。 MOV AL,DAT JMP DONE AND AL,AL LPl:MOV MARK,0FFH JS LP1 JMP DONE JZ LP2 LP2:MOV MARK+1,0FFH MOV MARK+2,0FFH DONE:HLT 3.写出把首地址为BLOCK字数组中的第6个字,送到DX寄存的指令(或指令组),要求使用以下几种寻址方式: (1) 寄存间接寻址MOV BX,OFFSET BLOCK+6 MOV DX,[BX] (2) 寄存相对寻址LEA BX,BLOCK MOV DX,[BX+12] (3) 基址变址寻址LEA BX,BLOCK MOV SI,12 MOV DX,[BX+SI] 4.AX寄存器中存放着4位十六进制数。试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCII码,并依次存放到RESULT数组的4个字节中去,要求用调用子程序的方法实现。 CODE SEGMENT HASC PROC NEAR ASSUME CS:CODE,DS:CODE MOV DL,AL START: MOV BX,CODE AND DL,0FH MOV DS,BX CMP DL,9 MOV CL,4 JA L2 MOV BL,4 ADD DL,30H MOV SI,OFFSET RESULT L1: RET LP: CALL HASC L2: ADD DL,37H MOV [SI],DL JMP L1 INC SI HASC ENDP SHR AX,CL RESULT DB 4 DUP(?) DEC BL CODE ENDS JNZ LP END START EXIT: MOV AH,4CH INT 21H

相关文档
最新文档