4.2 DOS 系统功能调用和 BIOS 中断调用 概述 磁盘操作系统 DOS 采用模块化 层次化结构, 其层次结构如图所示 2015 年 4 月 13 日星期一 7 时 45 分 11 秒 2

Size: px
Start display at page:

Download "4.2 DOS 系统功能调用和 BIOS 中断调用 概述 磁盘操作系统 DOS 采用模块化 层次化结构, 其层次结构如图所示 2015 年 4 月 13 日星期一 7 时 45 分 11 秒 2"

Transcription

1 第 4 章 汇编语言程序设计 (2) 2015 年 4 月 13 日星期一 7 时 45 分 8 秒 1

2 4.2 DOS 系统功能调用和 BIOS 中断调用 概述 磁盘操作系统 DOS 采用模块化 层次化结构, 其层次结构如图所示 2015 年 4 月 13 日星期一 7 时 45 分 11 秒 2

3 4.2 DOS 系统功能调用和 BIOS 中断调用 概述 组成 DOS 的各主要模块的功能 : 系统硬件主要指 I/O 设备, 如 CRT 显示器 打印机 键盘 硬盘和鼠标等 基本输入输出系统 BIOS(Basic Input Output System) 包含 : 能直接与底层硬件打交道的设备驱动程序 ; 系统设置信息 ; 开机后自检程序和系统自启动程序 利用中断调用指令 INT n, 可以直接调用 BIOS 中的外设驱动程序, 实现对主要 I/O 设备的控制管理 2015 年 4 月 13 日星期一 7 时 45 分 11 秒 3

4 4.2 DOS 系统功能调用和 BIOS 中断调用 概述 DOS 核心 MSDOS.SYS 该模块以 BIOS 为基础, 为用户提供一大批可以直接使用的服务程序, 这组服务程序称为 DOS 系统功能调用 可用 INT 21H 指令来调用, 并以功能号来区分不同的服务程序 它们主要用来实现文件管理 存储器管理及设备管理等, 功能比 BIOS 更齐全 更完整 命令处理程序 COMMAND.COM 该模块以可执行命令文件的形式存放在系统盘上, 它执行后便给出 DOS 命令提示符 >, 由它接收用户在此提示符下键入的命令, 进行分析处理后, 让机器执行各种应用程序, 并在 CRT 上显示执行结果 2015 年 4 月 13 日星期一 7 时 45 分 12 秒 4

5 4.2 DOS 系统功能调用和 BIOS 中断调用 常用软件中断 中断功能调用 由 OS 提供的一组实现特殊功能的子程序供程序员在程序中调用, 以减轻编程工作量 中断功能调用有两种, 一种称为 DOS 功能调用, 另一种称为 BIOS 中断调用 编程时, 不必涉及硬件就可以使用系统的硬件 用户程序在调用这些系统服务程序时, 不是用 CALL 命令, 而是采用软中断指令 INT n 来实现 在 DOS 系统中, 功能调用用软中断指令 INT 21H 2015 年 4 月 13 日星期一 7 时 45 分 12 秒 5

6 表 DOS 常用软中断命令 软中断功能入口参数出口参数 INT 20H 程序正常退出无 INT 21H 系统功能调用 AH= 功能号 功能调用相应的入口参数 功能调用相应的出口参数 INT 22H 结束退出 不是真正的中断, 特定条件下通过操作系统来发送 INT 23H CTRL-BREAK 退出 在程序装入建立 PSP 时, 该三个中断的中断向量被复制 INT 24H 出错退出 到 PSP 相应偏移位置 INT 25H 读盘 CX= 读出扇区数 DX= 起始逻辑扇区 DS:BX= 缓冲区地址 AL= 盘号 INT 26H 写盘 CX= 写扇区数 DX= 起始逻辑扇区 DS:BX= 缓冲区地址 AL= 盘号 CF=0 成功 CF=1 出错 CF=0 成功 CF=1 出错 INT 27H 驻留退出 DS:DX 程序长度 INT 28-2EH DOS 专用 2015 年 4 月 13 日星期一 7 时 45 分 12 秒 6

7 4.2.2 DOS 系统功能调用 1. 中断处理程序分类 8086 CPU 可处理 256 类中断, 利用 INT n 指令, 可直接调用 256 个系统已编写好的中断处理程序 INT n 指令中的类型号 n=00~ffh; n=00~04h: 专用中断, 处理除法错 0 单步 1 不可屏蔽中断 NMI 2 断点 3 溢出中断 4; n=10h~1ah 2FH 31H 33H 为 BIOS 中断, 即保存在系统 ROM BIOS 中的 BIOS 功能调用 n=20h~2eh 为 DOS 中断, 应用 DOS 提供的功能程序来控制硬件, 可对显示器 键盘 打印机 串行通信等字符设备提供输入输出服务 2015 年 4 月 13 日星期一 7 时 45 分 12 秒 7

8 4.2.2 DOS 系统功能调用 1. 中断处理程序分类 例如 : n=20h 为程序结束中断, 利用 INT 20H 中断可返回 DOS 操作系统 n=21h 则为功能最强大的 DOS 中断, 它包含了很多子功能, 给每个子功能程序赋一个编号, 称为功能号, 调用前要送到 AH 寄存器中 2015 年 4 月 13 日星期一 7 时 45 分 12 秒 8

9 4.2.2 DOS 系统功能调用 2. DOS 系统功能调用方法 系统已将所有子程序按顺序编号, 称为功能调用号 DOS 系统功能调用的步骤 : 1) 功能调用号送到 AH 寄存器中,AH=00~6CH 2) 入口参数送到指定的寄存器中, 一种功能调用又包含多个子功能, 有些调用不带参数 3) 执行 INT 21H 指令 4) 得到出口参数, 或将结果显示在 CRT 上 2015 年 4 月 13 日星期一 7 时 45 分 12 秒 9

10 4.2.2 DOS 系统功能调用 3. DOS 系统功能调用举例 系统功能调用是微机的磁盘操作系统 DOS 为用户提供的一组例行子程序, 因而又称为 DOS 系统功能调用 INT 2lH 功能大致可以分为如下方面 : 设备管理目录管理文件管理内存分配其它 2015 年 4 月 13 日星期一 7 时 45 分 12 秒 10

11 表部分键盘和显示 DOS 调用 AH 功能入口参数出口参数 1 键入并显示一个字符 键入字符的 ASCII 码在 AL 中 2 显示一个字符 DL 中置输出字符的 ASCII 码 5 打印机输出一个字符 DL 中置输出字符的 ASCII 码 6 直接控制台 I/O 8 键盘输入一个字符 9 显示字符串 10(0AH) 11(0BH) 键入并显示字符串检验键盘状态 DL=0FFH( 输入 ) DL= 字符 ( 输出 ) DS:DX 置字符串首址, 字符串以 '$' 结束 DS:DX 置字符串首址, 第 1 单元置允许键入的字符数 ( 含一个回车符 ) AL= 输入字符 键入字符的 ASCII 码在 AL 中 键入的实际字符数在第 2 单元中, 键入的字符从第 3 单元开始存放 AL=FFH 有键入 AL=0 无键入 12(0CH) 清除输入缓冲区并请求指定的输入功能 AL= 输入功能号 (1,6,7,8,A) 2015 年 4 月 13 日星期一 7 时 45 分 12 秒 11

12 1)DOS 键盘功能调用利用 DOS 功能调用, 可将读入的键值送进 AL, 并显示在 CRT 上, 或检查是否有键压下等, 还可将从键盘输入的一串字符输入到内存缓冲区中 2015 年 4 月 13 日星期一 7 时 45 分 13 秒 12

13 (1) 从键盘输入一个字符 ( 功能号 =1) MOV AH,1 INT 21H <AL 中有键入的字符 > 若有键压下, 读入键值, 并检查是否为 Ctrl-Break 键? 若是, 自动调用 INT 23H 中断, 执行退出命令 ; 否则将键值送入 AL, 并显示该字符 例 DOS 功能调用 1, 等待从键盘输入一个字符 MOVAH,01 H;AH 功能调用号 01H INT 21H ;AL 读入键值, 并显示该字符 2015 年 4 月 13 日星期一 7 时 45 分 13 秒 13

14 例交互式程序中, 用户键入字母键 Y 或 N, 分别转入不同的程序去处理, 并在 CRT 上显示键入字符 ; 若按了 Ctrl-Break, 则结束程序, 否则继续等待 GET_KEY: MOV AH,01H ;AH 功能调用号 01H INT 21H ;AL 读入键值 CMP AL, Y ; 键值是 Y 吗? JE YES ; 是, 转 YES CMP AL, N ; 不是 Y, 是 N 吗? JE NO ; 是, 转 NO JNE GET_KEY ; 不是 N, 返回继续等待 YES: ; 按 Y 键的处理程序 NO: ; 按 N 键的处理程序 2015 年 4 月 13 日星期一 7 时 45 分 15 秒 14

15 (2) 控制台 I/O( 功能号 =6) MOV AH,6 ;6 号功能调用 MOV DL,0 FFH;DL=FFH, 键盘输入 INT 21H 当调用时 DL=FFH, 表示从键盘输入字符 执行后, 若 ZF=0, 则 AL 中为输入字符的键值 ; 若 ZF=1, 表示无键压下,AL 中不是键值 如果调用时 DL FFH, 表示从屏幕输出字符 2015 年 4 月 13 日星期一 7 时 45 分 15 秒 15

16 例 DOS 功能调用 6, 控制台 I/O, 不检查是否按了 Ctrl-Break 键 MOV AH,6 ;6 号功能调用 MOV DL,0 FFH;DL=FFH, 键盘输入 INT 21H 2015 年 4 月 13 日星期一 7 时 45 分 15 秒 16

17 (3) 输入字符串 ( 功能号 =0AH) 此功能调用从键盘输入一串字符, 并把它存入用户指定的缓冲区中 MOV AH, 0AH LEA DX, < 字符串缓冲区首地址 > INT 21H 用户定义的输入字符串的缓冲区格式 N 1 N 2 ( 预留的 N1 个字节的存储单元 ) 0DH N1: 缓冲区长度 ( 最大键入字符数 ) N2: 实际键入的字符数 ( 不包括回车符 0DH) 2015 年 4 月 13 日星期一 7 时 45 分 15 秒 17

18 例 4.21 利用 0AH 号 DOS 功能调用, 将键入字符送输入缓冲区 具体过程 : 调用前预先定义一个缓冲区, 首地址为 :DS:DX 缓冲区的第一个字节由用户指定, 存放缓冲区最大容量 ( 字节数 ); 第二个字节保留, 功能调用后存放实际键入的字符个数 ; 从第三个字节开始存入键盘输入的实际字符的 ASCII 码, 直到击了 ENTER 键为止 若键入的字符数小于最大字节数, 缓冲区其余部分都填 0; 若大于最大字节数, 则后键入的字符丢失, 并发出嘟嘟声 2015 年 4 月 13 日星期一 7 时 45 分 15 秒 18

19 程序如下 : DATA SEGMENT BUFF DB 50 ; 定义缓冲区最大 50(32H) 字节 DB? ; 存实际键入字节数 DB 50 DUP(?) ; 定义 50 个字节空间 ; 存放键入字符的 ASCII 码 DATA ENDS CODE SEGMENT MOV AX,DATA ; 定义 DS:DX MOV DS,AX ;DS= 缓冲区首址基地址 MOV DX,OFFSET BUFF;DX= 缓冲区首址偏址 MOV AH,0AH ;AH= 功能号 10 INT 21H CODE ENDS 2015 年 4 月 13 日星期一 7 时 45 分 15 秒 19

20 2) 显示功能调用 AH 功能入口参数说明 2 显示一个字符, 检查 Ctrl-Break DL 中置输出字符的 ASCII 码 光标随字符移动 6 直接控制台 I/O, 不检查 Ctrl-Break DL=0FFH( 输入 ) DL= 字符 ( 输出 ) 光标随字符移动 9 显示字符串 DS:DX 置字符串首址 字符串以 '$' 结束, 光标随串移动 2015 年 4 月 13 日星期一 7 时 45 分 15 秒 20

21 (1) 在显示器上显示一个字符 ( 功能号 =2) MOV AH, 2 MOV DL, < 要显示的字符 > INT 21H 例 : 在显示器上显示一个字符 A MOV AH, 2 MOV DL, A ; 或 MOV DL, 41H INT 21H 2015 年 4 月 13 日星期一 7 时 45 分 15 秒 21

22 (2) 显示字符串 ( 功能号 =9) MOV AH, 9 LEA DX, < 字符串 > INT 21H 注意 : 字符串的首地址送到 DS:DX, 被显示的字符串必须以 $ 结束 2015 年 4 月 13 日星期一 7 时 45 分 15 秒 22

23 例 : 在屏幕上显示 : HELLO,WORLD! ; 在数据段定义字符串 : DATA SEGMENT STR1 DB HELLO,WORLD!$ DATA ENDS ; 在代码段中进行显示输出 MOV AX,DATA MOV DS,AX;DS 字符串起始段地址 MOV AH,9 LEA DX,STR1;DX 偏移地址 INT 21H 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 23

24 3) 打印功能调用 将要在打印机上打印的字符的 ASCII 码送到 DL 中, 作为入口参数, 然后执行 5 号功能调用,DL 中的字符便会送到打印机去打印 例 4.24 在打印机上打印一串字符 Robot, 打印前换页, 打印完后回车 换行 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 24

25 3) 打印功能调用 程序如下 : CHAR DB 0CH, Robot, 0DH, 0AH, $ ; 待打印字符串,0AH 为换行码 MOV BX,0 ;BX 指向字符串开头 MOV AH,5 ;AH= 功能号 5 NEXT: MOV DL,CHAR [BX] ; 取一个字符 CMP DL, $ ; 是 $ 符吗 JE TO_STOP ; 是, 转停止打印 INT 21H ; 否, 打印该字符 INC BX ; 指向下一个字符 JMP NEXT ; 继续打印下一个字符 TO_STOP: ; 停止打印处理 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 25

26 4) 日期与时间设置 AH 功能入口参数出口参数 2BH 2AH 2DH 2CH 设置日期 取得日期 设置时间 取得时间 CX: 年号 DH: 月号 DL: 日号 CH: 小时 CL: 分 DH: 秒 DL: 百分之一秒 AL=0, 成功 AL=0FFH, 无效 CX: 年号 DH: 月号 DL: 日号 CH: 小时 CL: 分 DH: 秒 DL: 百分之一秒 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 26

27 (1) 设置日期 例设置日期为 2013 年 4 月 9 日 MOV CX,2013 ; 年份 MOV DH,4 ; 月份 MOV DL,9 ; 日期 MOV AH,2BH INT 21H 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 27

28 (2) 取得日期格式为 : MOV AH,2AH INT 21H 执行结果 : CX= 年份 DH= 月份 DL= 日期二进制方式存放 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 28

29 (3) 设置时间 例设置时间为 12 点 3 分 秒 MOV CH,12; 时 MOV CL,3; 分 MOV DH,12; 秒 MOV DL,34; 百分秒 MOV AH,2DH INT 21H 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 29

30 (4) 取得时间格式为 : MOV AH,2CH INT 21H 执行结果 : CH= 时 CL= 分 DH= 秒 DL= 百分秒二进制存放 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 30

31 5) 返回操作系统 格式为 : MOV AH,4CH INT 21H 执行结果 : 返回操作系统, 出现提示符 如 : C:\> C:\DOS> 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 31

32 4.2.3 BIOS 中断调用 BIOS: 基本输入输出系统, 是固化在 EPROM (EEPROM FLASH) 存储器 0FE000H 开始的 8KB 中的一组实现基本输入输出功能的子程序 BIOS 主要功能包括 : (1) 驱动系统中所配置的常用外设 ( 即驱动程序 ), 如显示器 键盘 打印机 磁盘驱动器 通信接口等 (2) 开机自检, 引导装入 (3) 提供时间 内存容量及设备配置情况等参数 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 32

33 4.2.3 BIOS 中断调用 说明 : 有些 DOS 系统功能调用和 BIOS 中断调用能完成同样的功能 例如, 要打印一个字符, 可以用 INT 21H 的 5 号 DOS 功能调用, 也可用 BIOS 的 INT 17H 的 0 号中断调用 由于 BIOS 更接近硬件, 使用起来要复杂一些, 尽量使用 DOS 系统功能调用 有些情况下, 必须使用 BIOS 中断调用 例如, INT 17 中断的 2 号调用为读打印机状态,DOS 功能调用无这种功能, 只能使用 BIOS 中断调用 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 33

34 4.2.3 BIOS 中断调用 BIOS 中断调用与 DOS 系统功能调用类似, 用户无须了解相关设备的结构与组成细节, 直接调用 BIOS 调用通过多个软中断提供, 调用方法为 : MOV AH,< 功能号 >; 多子功能时 < 设置入口参数, 一般将参数放在寄存器中 > INT n< 中断类型号 > 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 34

35 BIOS 中的几个主要中断类型如下 : INT 00H 0 作除数 INT 01H 单步中断 INT 02H 非屏蔽中断 (NMI) INT 03H 断点中断 INT 04H 算术溢出错误 INT 05H 打印屏幕和 BOUND 越界 INT 06H 非法指令错误 INT 07H 处理器扩展无效 INT 08H 时钟中断 INT 09H 键盘输入 INT 0BH 通信口 (COM2:) INT 0CH 通信口 (COM1:) INT 0EH 磁盘驱动器输入 / 输出 2015 年 4 月 13 日星期一 7 时 45 分 16 秒 35

36 BIOS 中的几个主要中断类型如下 ( 续 ): INT 11H 读取设备配置 INT 12H 读取常规内存大小 ( 返回值 AX 为内存容量, 以 K 为单位 ) INT 16H 键盘中断调用 INT 18H ROM BASIC INT 19H 重启动系统 INT 1BH CTRL+BREAK 处理程序 INT 1CH 用户时钟服务 INT 1DH 指向显示器参数表指针 INT 1EH 指向磁盘驱动器参数表指针 INT 1FH 指向图形字符模式表指针每类中断由包含许多子功能, 调用时通过功能号指定 2015 年 4 月 13 日星期一 7 时 45 分 17 秒 36

37 1. 键盘 I/O 中断调用 (INT 16H) 键盘 I/O 中断调用有三个功能, 功能号为 0, 1, 2, 且必须把功能号放在 AH 中 1)0 号功能调用格式 : MOV AH, 0 INT 16H 功能 : 从键盘读入字符送 AL 寄存器 执行时, 等待键盘输入, 一旦输入, 字符的 ASCII 码放入 AL 中 若 AL=0, 则 AH 为输入的扩展码 2015 年 4 月 13 日星期一 7 时 45 分 17 秒 37

38 1. 键盘 I/O 中断调用 (INT 16H) 2)1 号功能调用格式 : MOV AH, 01H INT 16H 功能 : 用来查询键盘缓冲区, 对键盘扫描但不等待, 并设置 ZF 标志 若有按键操作 ( 即键盘缓冲区不空 ), 则 ZF=0,AL 中存放的是输入的 ASCII 码,AH 中存放输入字符的扩展码 若无键按下, 则标志位 ZF= 年 4 月 13 日星期一 7 时 45 分 17 秒 38

39 1. 键盘 I/O 中断调用 (INT 16H) 3)2 号功能调用格式 : MOV AH, 02H INT 16H 功能 : 检查键盘上各特殊功能键的状态 执行后, 各种特殊功能键的状态放入 AL 寄存器中 2015 年 4 月 13 日星期一 7 时 45 分 17 秒 39

40 例检查 Ctrl 键是否按下, 若按下, 则控制转移到某个程序段执行 MOV AH, 02H INT 16H ; 取键盘状态到 AL 中 AND AL, B ; 检查 Ctrl 键是否按下 JNZ CTRL-ON... CTRL-ON: 2015 年 4 月 13 日星期一 7 时 45 分 17 秒 40

41 2. 打印机 I/O 中断调用 (INT 17H) 打印机 I/O 中断调用有三个功能, 功能号为 0, 1, 2 1)0 号功能调用入口参数为 AL 中放入字符的 ASCII 码,DX 中放打印机号 (0~2) 打印字符 'A' 的调用格式 : MOV AL, 'A' MOV DX, 01H MOV AH, 0 INT 17H 功能 : 打印一个字符, 且返回打印机状态到 AH 中 2015 年 4 月 13 日星期一 7 时 45 分 17 秒 41

42 2)1 号功能调用格式 : MOV AH, 01H INT 17H 功能 : 初始化打印机, 并返回打印机状态到 AH 中 2015 年 4 月 13 日星期一 7 时 45 分 17 秒 42

43 3)2 号功能调用格式 : MOV AH, 02H INT 17H 功能 : 返回打印机状态到 AH 中 0~2 号调用返回的打印机状态字 : 2015 年 4 月 13 日星期一 7 时 45 分 17 秒 43

44 3. 显示中断 (INT 10H) 的功能调用 控制系统中的视频显示, 也称视频服务中断 视频 ROM BIOS 位于显卡上, 不同显卡能提供的视频服务功能不一样,INT 10H 支持多种服务功能, 由 AH 指定,AH=00H~1CH INT 10H 中断控制显示器的功能十分强大, 还在不断发展 采用汇编语言控制很复杂, 程序也较长, 一般采用高级语言编程 2015 年 4 月 13 日星期一 7 时 45 分 17 秒 44

45 3. 显示中断 (INT 10H) 的功能调用 00H 设置显示器模式 01H 设置光标形状 02H 设置光标位置 03H 读取光标信息 04H 读取光笔位置 05H 设置显示页 06H 07H 初始化或滚屏 08H 读光标处的字符及其属性 09H 在光标处按指定属性显示字符 0AH 在当前光标处显示字符 0BH 设置调色板 背景色或边框 2015 年 4 月 13 日星期一 7 时 45 分 17 秒 45

46 3. 显示中断 (INT 10H) 的功能调用 ( 续 ) 0CH 写图形象素 0DH 读图形象素 0EH 在 Teletype 模式下显示字符 0FH 读取显示器模式 10H 颜色中断 11H 字体中断 12H 显示器的配置中断 13H 在 Teletype 模式下显示字符串 1AH 读取 / 设置显示组合编码 1BH 读取功能 / 状态信息 1CH 保存 / 恢复显示器状态 2015 年 4 月 13 日星期一 7 时 45 分 18 秒 46

47 3. 显示中断 (INT 10H) 的功能调用应用例 : 把一个 笑脸 图案在屏幕上斜线移动 具体要求 : (1) 设置屏幕属性并清屏, 置光标初始位置坐标 ; (2) 在指定坐标位置显示 ; (3) 延时一段时间 ; (4) 清除屏幕 ; (5) 行列坐标各加 1, 返回第二步 2015 年 4 月 13 日星期一 7 时 45 分 18 秒 47

48 3. 显示中断 (INT 10H) 的功能调用 流程图 2015 年 4 月 13 日星期一 7 时 45 分 18 秒 48

49 3. 显示中断 (INT 10H) 的功能调用 清屏子程序 CLR PROC PUSH PUSH PUSH PUSH MOV AX BX CX DX AL,0 MOV AH,6 ; 清屏功能号 MOV CH,10 ; 起始行号 MOV CL,10 ; 起始列号 MOV DH,69 ; 结束行号 MOV DL,69 ; 结束列号 MOV BH,70H ; 该区域屏幕属性 : 白底黑字 INT 10H ; 调用该中断 POP DX POP CX POP BX POP AX RET CLR ENDP 该子程序执行后, 使得屏幕上 (10,10) 到 (69,69) 这一区域被清屏, 同时设置该区域的显示属性为白底黑字 2015 年 4 月 13 日星期一 7 时 45 分 19 秒 49

50 3. 显示中断 (INT 10H) 的功能调用 延时子程序 DELAY PROC PUSH CX PUSH DX MOV DX,6000 L1: MOV CX,28000 L2: LOOP L2 DEC DX JNZ L1 POP DX POP CX RET DELAY ENDP 双重循环实现的延时子程序, 外层循环由 DX 控制次数 ; 内层循环由 CX 控制次数 2015 年 4 月 13 日星期一 7 时 45 分 19 秒 50

51 3. 显示中断 (INT 10H) 的功能调用 主程序 STACK SEGMENT STK DB 100 DUP(?) TOP EQU LENGTH STK STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK START: MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX CALL CLR MOV DH,10 MOV DL,10 ; 光标初始位置 DIS: MOV BH,0 MOV AH,2 INT 10H ; 置光标 MOV AL,2 ; 的 ASCII 码 MOV BL,70H MOV CX,1 MOV AH,0AH INT 10H ; 在光标位置显示字符 CALL DELAY CMP DH,69 JE OVER ; 是否显示结束 CALL CLR INC DH INC DL JMP DIS ; 光标下移 OVER: CALL CLR MOV AH,4CH INT 21H CODE ENDS END START 2015 年 4 月 13 日星期一 7 时 45 分 20 秒 51

52 4. 时间设置和读取 (INT 1AH) 00H 读取时钟 01H 设置时钟 02H 读取时间 03H 设置时间 04H 读取日期 05H 设置日期 06H 设置闹钟 07H 闹钟复位 0AH 读取天数计数 0BH 设置天数计数 80H 设置声音源信息 2015 年 4 月 13 日星期一 7 时 45 分 20 秒 52

53 5. 鼠标中断功能调用 INT 33H 提供对鼠标 (mouse) 的控制和调整, 处理鼠标驱动程序提供的信息 功能号为 00H~34H 与 DOS 系统功能调和大部分 BIOS 功能调用不同, 功能号不放入 AH, 而放在 AL 中, 事先令 AH=0 可用的鼠标功能调用有 50 余个 如 : 复位, 显示或隐藏光标, 设置光标位置, 设置图形或文本光标, 设置或获取加速曲线等等 2015 年 4 月 13 日星期一 7 时 45 分 20 秒 53

54 4.3 汇编语言程序设计方法与实例 概述 1. 程序质量 模块化 易读 程序流程简洁 逻辑关系正确 代码效率高, 加注释 2. 汇编语言程序设计的步骤 : 1 根据实际问题抽象出数学模型, 确定算法 ; 2 画出程序框图 ( 流程图 ) ; 3 分配内存工作单元和寄存器 ; 4 根据框图编写源程序, 生成.ASM 文件 ; 5 对源程序汇编, 生成.OBJ 目标文件 ; 6 将.OBJ 文件连接成.EXE 执行文件 ; 7 运行 调试 2015 年 4 月 13 日星期一 7 时 45 分 20 秒 54

55 4.3 汇编语言程序设计方法与实例 3. 汇编语言程序设计方法 每个程序只有一个入口, 必须要有出口, 中间内容不能含有死循环语句 程序都按照顺序结构 条件分支结构和循环结构等 3 种基本结构进行构建 设计时先考虑总体 全局目标, 再考虑细节 局部问题, 把复杂问题分解为一个个模块或子目标, 一步步进行设计 将这些基本结构 子模块合理组合起来, 就可构成一个大的程序 编程时要在程序行上适当加注释 这样设计出来的程序层次分明, 结构清楚, 可读性强, 便于调试 编写较复杂的程序时, 一般应先画出程序流程图, 将设计步骤细化, 再按流程图设计编写程序 2015 年 4 月 13 日星期一 7 时 45 分 20 秒 55

56 汇编语言上机过程 Y Y 开始输入 ( 修改 ) 源程序 汇编有错? N 连接有错? N 运行有错? Y 查错 N 用 EDIT,NOTEPAD 等任何文本编辑器 源程序存为.ASM 文件 用 UltraEdit MASM 宏汇编程序进行汇编 生成.OBJ 目标文件 命令格式 :MASM < 源文件名.ASM> 用 LINK 连接程序进行连接 连接后生成.EXE 可执行文件 命令格式 :LINK < 目标文件名.OBJ>; 结束 用 TD DEBUG 等调试程序进行调试 命令格式 :TD < 可执行文件名.EXE> 2015 年 4 月 13 日星期一 7 时 45 分 20 秒 56

57 4.3.1 顺序结构程序设计 顺序结构程序也称为简单程序, 这种程序按指令排列的先后顺序逐条执行 2015 年 4 月 13 日星期一 7 时 45 分 20 秒 57

58 例两个 32 位无符号数乘法程序 在 8086 中, 数据是 16 位的, 它只有 16 位运算指令, 若是两个 32 位数相乘就无法直接用指令实现 ( 在 中有 32 位数相乘的指令 ), 但可以用 16 位乘法指令做 4 次乘法, 然后把部分积相加来实现 若数据区中已有一个缓冲区存放了 32 位的被乘数和乘数, 保留了 64 位的空间以存放乘积, 能实现上述运算的程序流程图如图所示 2015 年 4 月 13 日星期一 7 时 45 分 21 秒 58

59 程序 name 32 bit multiply data segment mulnum dw 0000,0ffffh,0000, 0ffffh,4 dup(?) data ends stack segment para stack stack db 100 dup(?) stack ends code segment assume cs:code,ds:data,ss:stack,es:data start proc far begin: push ds ;DS 中包含的是程序段前缀的起始地址 mov ax,0 push ax ; 设置返回至 DOS 的段值和 IP 值 mov ax,data mov ds,ax mov es,ax ; 置段寄存器初值 lea bx,mulnum 2015 年 4 月 13 日星期一 7 时 45 分 21 秒 59

60 程序 mulu32: mov ax,[bx] ;B AX mov si,[bx+4] ;D SI mov di,[bx+6] ;C DI mul si ;B D mov [bx+8],ax ; 保存部分积 1 mov [bx+0ah],dx mov ax,[bx+2] ;A AX mul si ;A D add ax,[bx+0ah] adc dx,0 ; 部分积 2 的一部分与部分积 1 的相应部分相加 mov [bx+0ah],ax mov [bx+0ch],dx ; 保存 mov ax,bx] ;B AX mul di ;B C add ax,[bx+0ah] ; 与部分积 3 的相应部分相加 adc dx,[bx+0ch] 2015 年 4 月 13 日星期一 7 时 45 分 21 秒 60

61 程序 start code end mov mov pushf mov mul popf adc adc mov mov ret endp ends begin [bx+0ah],ax [bx+0ch],dx ; 保存后一次相加的进位位 ax,[bx+2];a AX di;a C ax,[bx+0ch]; 与部分积 4 的相应部分相加 dx,0 [bx+0ch],ax [bx+0eh],dx 2015 年 4 月 13 日星期一 7 时 45 分 22 秒 61

62 例 4.34 由人机对话从键盘输入 1 个 10 进制数 (0~9), 查表求键入数字的平方值, 存入 AL 寄存器中, 并显示有关的提示信息 试编写汇编语言程序 解 : 数据段中, 先给出数字 0~9 的平方值, 逐个存入 TABLE 开始的内存中, 形成表格, 以便查找, 再给出等待显示的提示信息 代码段由 3 个部分组成 : 显示提示信息 ; 等待键入数字 ; 查表求键入数字的平方值, 并将结果存入 AL 中 2015 年 4 月 13 日星期一 7 时 45 分 22 秒 62

63 程序如下 : DATA SEGMENT TABLE DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81; 数字 0~9 的平方值 BUF DB Please input a number(0~9):,0dh,0ah, $ ; 提示信息 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ; 设置 DS MOV DX,OFFSET BUF ; 设置 DX, 使字符串首地址 =DS:DX MOV AH,9H ;9 号 DOS 功能调用 INT 21H ; 显示提示信息 MOV AH,01 ;1 号功能调用, 等待键入字符 INT 21H ;AL 键入数字的 ASCII 码 AND AL,0FH ;AL 截下数字值 ;( 表内元素序号 ) MOV BX,OFFSET TABLE ;BX 指向表头地址 TABLE MOV AH,0 ;AX 寄存器高字节清 0 ADD BX,AX ; 表头地址 + 键入数字 (AL), 结果存入 BX MOV AL,[BX] ; 查表求得平方值 ; MOV AX,4C00H INT 21H ; 返回 DOS CODE ENDS END START 2015 年 4 月 13 日星期一 7 时 45 分 22 秒 63

64 例 4.35 在存储单元 A1 和 A2 中, 各存有一个 2 字节的无符号数, 低字节在前, 高字节在后 编程将两数相加, 结果存入 SUM 单元, 也要求低字节在前, 高字节在后, 进位存入最后一个字节单元 2015 年 4 月 13 日星期一 7 时 45 分 22 秒 64

65 程序如下 : DATA SEGMENT A1 DB 56H,78H ; 数 A1 A2 DB 4FH,9AH ; 数 A2 SUM DB 3 DUP(0) ; 存两数相加之和, 考虑进位位 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA BEGIN: MOV AX,DATA MOV DS,AX ; 设置数据段基址 MOV BX,0 ;BX 为地址指针, 初值清 0 CLC ; 进位位清 0 MOV AL,A1 [BX] ; 取低字节 A1 ADC AL,A2 [BX] ; 与 A2 低字节相加 MOV SUM [BX],AL ; 存入 SUM 单元 ( 低字节 ) INC BX ; 调整指针 MOV AL,A1 [BX] ; 取高字节相加 ADC AL,A2 [BX] MOV SUM [BX],AL ; 存高字节 JNC STOP ; 无进位, 转 STOP INC BX ; 有进位 MOV AL,0 INC AL MOV SUM [BX],AL ; 进位存入 SUM+2 单元 STOP: MOV AX,4C00H INT 21H CODE ENDS END BEGIN 2015 年 4 月 13 日星期一 7 时 45 分 22 秒 65

66 4.3.2 分支结构 要求程序根据不同条件选择不同的处理方法, 即程序处理步骤中出现了分支, 应根据某一特定条件, 选择其中一个分支执行 2015 年 4 月 13 日星期一 7 时 45 分 22 秒 66

67 4.3.2 分支结构 1. 分支结构 (IF THEN 结构 ) 条件满足? 标号 : Y 处理体 N 程序结构 : 测试 / 比较指令 (TEST/CMP) 条件转移指令 (Jx 标号 ) 处理体 标号 : 其他指令 2015 年 4 月 13 日星期一 7 时 45 分 22 秒 67

68 2. 多分支 (IF THEN ELSE 结构 ) 程序结构 : 条件 1 条件 2 条件满足? 标号 1: TEST/CMP 指令 Jx 标号 1 处理体 P1 处理 P1 标号 2: 处理 P2 JMP 标号 2 标号 1: 处理体 P2 标号 2: 其他指令 2015 年 4 月 13 日星期一 7 时 45 分 22 秒 68

69 2. 多分支 (IF THEN ELSE 结构 ) 例 4.36 设某学生的英语成绩已存放在 AL 寄存器中, 如果分数低于 60 分, 则打印 F, 如高于等于 85 分, 则打印 G, 否则打印 P 这就是一个分支程序 2015 年 4 月 13 日星期一 7 时 45 分 22 秒 69

70 3.CASE 结构程序结构 : 标号 1: 标号 2: 标号 n: 标号 n+1: Y? P1 条件 1 成立 N 条件 2 成立? 条件 n 成立? Pn+1 N N Y Y P2 Pn TEST/CMP 指令 ( 测试条件 1) Jx 标号 1 ; 不满足转标号 1 处理体 P1 JMP 标号 n+1 标号 1:TEST/CMP 指令 ( 测试条件 2) Jx 标号 2 ; 不满足转标号 2 处理体 P2 JMP 标号 n+1 标号 2:TEST/CMP 指令 ( 测试条件 3) Jx 标号 3 ; 不满足转标号 3 处理体 P3 JMP 标号 n+1 标号 3:TEST/CMP 指令 ( 测试条件 4) 标号 n+1:( 公共出口 ) 2015 年 4 月 13 日星期一 7 时 45 分 23 秒 70

71 3.CASE 结构 例 4.37 在存储器中以首地址 BUF 开始存有一串字符, 字符串个数用 COUNT 表示 要求统计数字 0~9 字母 A~Z 和其它字符的个数, 并分别将它们的个数存储到 NUM 开始的 3 个内存单元中去 在 ASCII 码表中, 数字 0~9 的 ASCII 码为 30H~39H, 大写字母 A~Z 的 ASCII 码为 41H~5AH, 其余值为其它字符或控制符的 ASCII 码值 可以将 ASCII 码分成 5 个部分或 5 个分支来处理, 其示意图如下 2015 年 4 月 13 日星期一 7 时 45 分 23 秒 71

72 3.CASE 结构 先从 BUF 单元取出 1 个字符的 ASCII 码, 经分支程序判断它属于数字 字母还是其它字符, 然后使相应计数器的值 +1 数字个数存放在 DL 中, 字母个数存放在 DH 中 接下来分析第 2 个数, 直至所有字符处理完后, 将统计出的个数送入相应存储单元 2015 年 4 月 13 日星期一 7 时 45 分 23 秒 72

73 程序如下 : DATA SEGMENT BUF DB +36, PRINT, abc, 2A0CH, # ; 一串字符 COUNT EQU $-BUF ;COUNT= 字符总个数 NUM DB 3 DUP(?) ; 先后存放存数字 字母 ; 和其它字符个数 DATA ENDS ; CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ; 设置数据段 MOV CH,COUNT ;CH 数组长度 MOV BX,0 ;BX 为基址指针, 初值清 0 MOV DX,0 ;DH 数字个数,DL 字母个数, 初值清 0 LOOP1: MOV AH,BUF [BX] ;AH 取一个数 CMP AH,30H ;<30H? JL NEXT ;1 是, 转 CMP AH,39H ;>39H? JG ABC ; 是, 转 INC DH ;2 否, 数字个数增 1 JMP NEXT 2015 年 4 月 13 日星期一 7 时 45 分 23 秒 73

74 程序如下 : ABC: CMP AH,41H ;<41H? JL NEXT ;3 是, 非字母, 转 CMP AH,5AH ;>5AH? JG NEXT ;5 是, 非字母, 转 INC DL ;4 否, 字母个数增 1 NEXT: INC BX ; 基地址指针加 1 DEC CH ; 字符串长度减 1 JNZ LOOP1 ; 未完, 取下一个数 CODE END MOV NUM,DH ; 已完, 存数字个数 MOV NUM+1,DL ; 存字母个数 MOV AH,COUNT SUB AH,DH SUB AH,DL ; 计算出其它字符个数 MOV NUM+2,AH ; 存其它字符个数 MOV AX,4C00H INT 21H ENDS START 2015 年 4 月 13 日星期一 7 时 45 分 23 秒 74

75 4. 跳转表实现多分支 BASE BASE+2 P1 P2 P1 低位 P1 高位 P2 低位 P2 高位 BASE E9 P1 低位 P1 高位 E9 P2 低位 P2 高位 BASE JMP P1 JMP P 关键字值 P1 程序入口地址 P2 程序入口地址 P8 程序入口地址 根据表内地址分支根据表内指令分支根据关键字分支 2015 年 4 月 13 日星期一 7 时 45 分 23 秒 75

76 例根据表内指令分支 DATA SEGMENT BASE DB E9,P1 低,P1 高,E9 DB E9 E9,P9 低,P9 高 DATA ENDS MOV AH,1 INT 21H; 键入字符存 AL AND AL,0FH MOV AH,0 MOV BL,AL; ADD AL,AL; ADD AL,BL; 将输入的数字乘 3 MOV BX,OFFSET BASE ADD BX,AX; 得到跳转表的偏移地址 JMP BX; 跳转表中存放另一条跳转指令 BASE E9 P1 低位 P1 高位 E9 P2 低位 P2 高位 JMP P1 JMP P 年 4 月 13 日星期一 7 时 45 分 24 秒 76

77 4.3.3 循环程序结构 1.D0 UNTIL< 条件 > 结构先执行, 再判断条件 工作部分至少执行一次 初始化 循环体 修改控制参数 循环控制? Y N 2015 年 4 月 13 日星期一 7 时 45 分 24 秒 77

78 2. DO WHILE< 条件 > 结构先判断条件, 再执行 工作部分有可能一次都不执行 初始化 循环控制? Y 循环体 N 出口 修改控制参数 2015 年 4 月 13 日星期一 7 时 45 分 24 秒 78

79 3. 多重循环在一个循环中包含另一个循环, 这就是多重循环 如, 多维数组的运算 注意 : 1 各循环的初始控制条件及程序实现 ; 2 循环可以嵌套 ( 多重循环 ), 但多个循环体之间不能交叉, 控制条件不能混淆 ; 防止出现死循环, 即不能让循环回到初始条件而引起死循环 2015 年 4 月 13 日星期一 7 时 45 分 24 秒 79

80 例 4.38 在一串给定个数的数据中寻找最大值, 存放到 MAX 存储单元中 DATA SEGMENT BUF DW 1234H,3200H,4832H,5600H ; 一串字数据 COUNT EQU ($-BUF)/2 ; 数据个数 ( 循环次数 ) MAX DW? ; 存最大值 DATA ENDS ; STACK SEGMENT STACK STAPN DB 100 DUP(?) TOP EQU LENGTH STAPN STACK ENDS 2015 年 4 月 13 日星期一 7 时 45 分 24 秒 80

81 CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,SS:STACK START: MOV AX,STACK MOV SS,AX MOV SP,TOP PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV CX,COUNT ;CX 字符个数 LEA BX,BUF ;BX BUF 的偏移地址 MOV AX,[BX] ;AX 缓冲器中取一个数 2015 年 4 月 13 日星期一 7 时 45 分 24 秒 81

82 INC BX ; 修改地址指针 INC BX DEC CX ; 循环次数减 1 AGAIN:CMP AX,[BX] ;AX 与后取的数比较 JGE NEXT ; 如 AX 中数大于等于后者, 则转 MOV AX,[BX] ; 如后取的数大, 则将其送 AX NEXT:LOOP AGAIN ; 没处理完, 转 ( 循环操作 ) RET ; 返回 DOS MAIN ENDP ; 处理完, 结束 CODE ENDS END MAIN 2015 年 4 月 13 日星期一 7 时 45 分 24 秒 82

83 例 : 编写程序, 在 S 中存放 100 个数, 要求设计程序将这些数由小到大排序, 排序后的数, 仍放在该区域中, 并显示排序后的结果 DATA SEGMENT STR1 DB 'PLEASE INPUT SOME DATA,THE END FLAG IS$','$' S DB 100 DB? DB 100 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,9 INT 21H ; 显示 STR 年 4 月 13 日星期一 7 时 45 分 24 秒 83

84 MOV DL,0AH MOV AH,2 INT 21H ; 显示 DL 中的单个字符 0AH( 换行 ) LEA DX,S MOV AH,0AH INT 21H ; 输入字符串到缓冲区 S 中 MOV SI,DX ; 缓冲区首址送 SI MOV DL,0AH MOV AH,2 INT 21H ; 显示 DL 中的单个字符 0AH( 换行 ) MOV CL,[SI+1] MOV CH,0 SUB CX,2 MOV DX,CX DEC DX ADD SI,2 L1: MOV BL,[SI] INC SI 2015 年 4 月 13 日星期一 7 时 45 分 24 秒 84

85 MOV BH,[SI] CMP BH,BL JG L2 MOV [SI],BL MOV [SI-1],BH L2: LOOP L1 LEA SI,S ADD SI,2 MOV CX,DX DEC DX JNZ L1 LEA DX,S ADD DX,2 MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 2015 年 4 月 13 日星期一 7 时 45 分 24 秒 85

86 循环程序, 课堂练习 计算两个多字节十六进制数之和 : 3B74AC60F8H+20D59E36C1H=? 提示 : 这是一个单循环程序式中被加数和加数均有 5 个字节, 可以编一个循环程序实现以上运算 假设已将被加数和加数分别存入从 DATA1 和 DATA2 开始的两个内存区, 且均为低位字节在前, 高位字节在后, 如图 要求相加所得结果仍存回以 DATA1 为首址的内存区 2015 年 4 月 13 日星期一 7 时 45 分 24 秒 86

87 程序如下 : MOV CX, 5 ; 设置循环次数 MOV SI, 0 ; 置位移量初值 CLC ; 清进位 CF LAD: MOV AL, DATA2[SI] ; 取一个加数 ADC DATA1[SI], AL ; 和一个被加数相加 INC SI ; 位移量加 1 DEC CX ; 循环次数减 1 JNZ LAD ; 加完否, 若没完, 转 LOOPER, 继续相加 HLT ; 程序暂停 2015 年 4 月 13 日星期一 7 时 45 分 25 秒 87

88 4.3.4 代码转换程序 在计算机中, 经常需要将数据从一种形式转换成另一种形式 例如, 2 进制数转换成 10 进制数, 再转换成 ASCII 码显示出来 ; 10 进制数转换成 2 进制数, 再转换成 16 进制数等 要编写各种代码转换程序 2015 年 4 月 13 日星期一 7 时 45 分 25 秒 88

89 4.3.4 代码转换程序 例 4.41 将 AL 寄存器中的二进制数转换成非压缩 BCD 数, 存入 AX 中, 再转换成 ASCII 码后在 CRT 上显示 设 AL 中的初值为 B=62H, 它等于 10 进制数的 98 将它除以 10 后, 可得商为 9, 余数为 8, 将其存放入 AX 中, 使 AX=0908H, 与 3030H 相加 ( 也可相或 ), 即转换成 ASCII 码 3938H, 用 2 号 DOS 功能调用即可显示出来 2015 年 4 月 13 日星期一 7 时 45 分 25 秒 89

90 4.3.4 代码转换程序 BIN_ASC PROC NEAR MOV AH,0 MOV BL,10 ; 除数 DIV BL ;AL 商 (9), AH 余数 (8) XCHG AH,AL ; AX=0908H( 非压缩 BCD 数 ) ADD AX,3030H ;AX=3938H( 转换为 ASCII 码 ) MOV CX,AX ;CX 3938H MOV DL,CH MOV AH,2 INT 21H ; 显示 DL 中的 9 MOV DL,CL MOV AH,2 INT 21H ; 显示 DL 中的 8 RET BIN_ASC ENDP 2015 年 4 月 13 日星期一 7 时 45 分 25 秒 90

91 综合举例 十 二进制数 ASCII 码之间的互相转换 1 BCD 数 2 进制数算法 :D n-1 *10 n-1 + +D 0 *10 0 = ( (D n-1 *10+ D n-2 )*10+ )*10+ D 0 = ( ((0*10+D n-1 )*10+ D n-2 )*10+ )*10+ D 0 即 : 新的中间结果 = 中间结果 *10+ 本位数字 ( 中间结果初值为 0) 2015 年 4 月 13 日星期一 7 时 45 分 25 秒 91

92 程序 1 将 的非压缩 BCD 数转换成 2 进制数 程序如下 : ; 数据段定义 data SEGMENT decnum DB 5, 3, 0, 1, 9 ;BCD 数 binnum DW? data ENDS 2015 年 4 月 13 日星期一 7 时 45 分 25 秒 92

93 prog SEGMENT ASSUME CS:prog,DS:data begin: MOV AX, data MOV DS, AX MOV SI, OFFSET decnum MOV CX, 5 ;5 位 BCD 数 MOV BX, 10 XOR AX, AX ; 中间结果初始值为 0 next: MUL BX ; 中间结果 *10+ 本位数字 ADD AL, [SI] ADC AH, 0 ; 将大于 255 的进位加到高字节 INC SI ; 指向下位 BCD 数 LOOP next MOV binnum, AX ; 保存结果 MOV AH, 4CH INT 21H prog ENDS END begin 2015 年 4 月 13 日星期一 7 时 45 分 26 秒 93

94 程序 2 把 255 的非压缩 BCD 数转换成 2 进制数 decnum DB 1,5,9 ;BCD 数 159 binnum DB? MOV AX,decnum XCHG AH, AL ; 百位在 AH, 十位在 AL AAD ; 百位数 *10 + 十位数 MOV AH, AL ; 中间结果送 AH MOV AL, decnum+2 AAD ; 中间结果 *10 + 个位数 MOV binnum, AL 2015 年 4 月 13 日星期一 7 时 45 分 26 秒 94

95 2 ASCII 码数字 二进制数 ( 用于输入 ) 例 : 从键盘输入两个整数, 并求其和 因键入为整数, 故要进行如下转换 : ASCII BCD 二进制数 ASCII BCD 码很简单, 高 4 位清零即可得到非压缩的 BCD 码 BCD 二进制数, 在本例 ( 以及前例 1) 中采用以下方法 : ((((0+ 千位数 )*10+ 百位数 )*10)+ 十位数 )*10+ 个位数 第一次中间结果 第二次中间结果 第三次中间结果 最终结果 2015 年 4 月 13 日星期一 7 时 45 分 26 秒 95

96 主程序 开始 转换子程序 开始 键入两个数 两个数分别转换成二进制数 相加 如有溢出则提示 返回 DOS 取第一个 ASCII 码 N 是负号吗? Y 数字符个数 -1, 指针 +1 指针定位 字符个数 -1 Y = 0? N 取数字, 与中间结果相加, 再乘以 10 加个位数 是负数则求补 结束 指向下一个数字字符存结果 结束 2015 年 4 月 13 日星期一 7 时 45 分 26 秒 96

97 程序如下 : DATA SEGMENT STR1 DB 10,?,10 DUP(?) ; 第 1 个数的输入缓冲区 STR2 DB 10,?,10 DUP(?) ; 第 2 个数的输入缓冲区 NUM DW?,? ; 存转换后的二进制数 SUM DW 0 ; 存和 OVER DB Overflow!,13,10, $ DATA ENDS ; CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR 2015 年 4 月 13 日星期一 7 时 45 分 26 秒 97

98 START: MOV AX,DATA MOV DS,AX MOV AH,0AH LEA DX,STR1 INT 21H ; 输入第一个数字串 ( 设为 26) MOV AH,0AH LEA DX,STR2 INT 21H ; 输入第二个数字串 ( 设为 33) LEA BX,STR1 ; 串 1 的首地址送 BX LEA DI,NUM ; 串 1 二进制结果首地址送 DI CALL CHANGE ; 将串 1 ASCII 码 二进制 LEA BX,STR2 ; 串 2 的首地址送 BX 2015 年 4 月 13 日星期一 7 时 45 分 26 秒 98

99 NEXT: MAIN LEA DI,NUM+2 ; 串 2 二进制结果首地址送 DI CALL CHANGE ; 将串 2 ASCII 码 二进制 MOV AX,NUM ;(AX)=[NUM]=001AH( 串 1) ADD AX,NUM+2 ; 两数相加,(AX)=003BH( 串 2) MOV SUM,AX ; 存和 JNO NEXT ; 无溢出, 转 NEXT LEA DX,OVER MOV AH,9 INT 21H ; 显示 Overflow! MOV AH,4CH INT 21H ; 返回 DOS ENDP 2015 年 4 月 13 日星期一 7 时 45 分 26 秒 99

100 CHANGEPROC ; 转换子程序定义 MOV CL,[BX+1] ; 实际字符数送 CL MOV AL,[BX+2] ; 第一个字符送 AL 续取补 MOV CH,AL ; 暂存在 CH, 后 CMP AL, - ; 第一个字符是负号吗? JNZ NEXT1 ; 不是, 转 NEXT1 DEC CL ; 字符数减 1 INC BX NEXT1: ADD BX,2 ; 指向第一个数字字符 MOV AX,0 ; 清零 AX, 存二进制数 LP1: DEC CL JZ NEXT2 ; 若 (CL)=0, 转 NEXT2 MOV DL,[BX] ; 取字符 AND DL,0FH ; 转换成 BCD 码 ADD AL,DL ; 加到中间结果上 ADC AH, 年 4 月 13 日星期一 7 时 45 分 26 秒 100

101 MOV DX,10 MUL DX ;*10 INC BX ; 指向下一个字符 JMP SHORT LP1 NEXT2: MOV DL,[BX] ; 取个位数 AND DL,0FH ; 个位 ASCII 未组合 BCD ADD AX,DX ; 加个位数,(AX)=001AH CMP CH, - ; 是 -? JNZ NEXT3 ; 该数非负, 转 NEXT3 NEG AX ; 若为负, 求补 NEXT3: MOV [DI],AX ; 存二进制结果 RET CHANGE ENDP ; CODE ENDS END START 2015 年 4 月 13 日星期一 7 时 45 分 26 秒 101

102 设键入第 1 个数为 26, 第 2 个数为 33, 则在内存各变量分配如下 : STR1 STR2 NUM SUM OVER 0A 02 32( 2 ) 36( 6 ) 0D 0A 02 33( 3 ) 33( 3 ) 0D 1A B 00 O 10 个 10 个?? STR1 若键入 年 4 月 13 日星期一 7 时 45 分 26 秒 102 0A D

103 本例题重点掌握 : * 如何从键盘输入一个字符串 *ASCII 未组合 BCD 二进制 * 有符号数的运算, 对负数和溢出如何处理 2015 年 4 月 13 日星期一 7 时 45 分 27 秒 103

104 3 二进制数 BCD 方法 1 计算二进制数中所包含的 1000 的个数 100 的个数 10 的个数和 1 的个数 方法 2 二进制数 ( 商 ) 除以 10 取余, 将余数按先后出现次序从右向左排列 2015 年 4 月 13 日星期一 7 时 45 分 27 秒 104

105 采用方法 1 的程序流程图 Y 二进制数 AX 令 (DL)=0 (AX)-1000 <0? (DL)+1 N (AX)+1000 (AX) DL 存至缓冲区 令 (DL)=0 求 100 的个数, 结构同上 Y A (AX)-10 <0? N (DL)+1 (AX)+10 (AX) 存 DL 存 AL 返回 DOS A 2015 年 4 月 13 日星期一 7 时 45 分 27 秒 105

106 汇编程序如下 : DATA SEGMENT BNUM DB 270FH DNUM DB 4 DUP(?) ; 存放 BCD 码的缓冲区 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA BINBCD PROC FAR BEGIN: MOV AX,DATA MOV DS,AX MOV AX,BNUM ; 取二进制数 LEA BX,DNUM ;BCD 码缓冲区首地址送 BX 2015 年 4 月 13 日星期一 7 时 45 分 27 秒 106

107 ; 计算百位的个数 MOV DL,0 ; 千位的个数计数器 AGAIN1: SUB AX,1000 ;(AX)-1000 JC NEXT1 ; 若 0, 则退出循环 INC DL ;(DL)+1 JMP AGAIN1 NEXT1: ADD AX,1000 ;(AX) (AX)+1000 MOV [BX],DL ; 存千位的个数 ; 计算百位的个数 MOV DL,0 ; 百位的个数计数器 AGAIN2: SUB AX,100 ;(AX)-100 JC NEXT2 INC DL JMP AGAIN2 NEXT2: ADD AX,100 MOV [BX+1],DL ; 存百位的个数 2015 年 4 月 13 日星期一 7 时 45 分 27 秒 107

108 MOV DL,0 ; 十位的个数计数器 AGAIN3: SUB AX,10 ;(AX)-10 JC NEXT3 INC DL JMP AGAIN3 NEXT3: ADD AX,10 MOV [BX+2],DL ; 存十位的个数 MOV [BX+3],AL ; 存个位的个数 MOV AH,4CH INT 21H BINBCD ENDP ; CODE ENDS END BEGIN 2015 年 4 月 13 日星期一 7 时 45 分 27 秒 108

109 4 二进制位串转换为 ASCII 码一个二进制位串若要送显示或打印, 需把串中每一位 (0 或 1) 化为 ASCII 码 思路 : 先将目标串全部预置为 30H, 再把每个二进制位逐位左移至 CF, 然后判 CF=0? 若是, 取下一位 ; 若不是, 将 31H 送此单元 流程图如下页 2015 年 4 月 13 日星期一 7 时 45 分 27 秒 109

110 初始化 用 0 填满串 取要转换的数 左移 1 位 N CF=1? 存入 1 调整指针 转换完? N 结束 2015 年 4 月 13 日星期一 7 时 45 分 27 秒 110

111 汇编程序如下 : DATA SEGMENT NUM DW 6F78H STRING DB 16 DUP(?) DATA ENDS ; CODE SEGMENT ASSUME CS:CODE, DS:DATA BINCA PROC FAR BEGIN: MOV AX,DATA MOV DS,AX MOV ES,AX CLD LEA DI,STRING MOV CX,16 ; 串的长度 MOV AL,30H REP STOSB ; 串中全部填充为 年 4 月 13 日星期一 7 时 45 分 27 秒 111

112 MOV CX,16 LEA DI,STRING MOV AL, 1 MOV BX,NUM ;(BX)=6F78H AGAIN: RCL BX,1 ; 含进位位循环左移 JNC NEXT ; 若为 0, 转 MOV [DI],AL ; 若为 1, 对应位送入 1 NEXT: INC DI LOOP AGAIN MOV AH,4CH ; 全部转换完毕, 返回 INT 21H ;DOS BINCA ENDP CODE ENDS END BEGIN 2015 年 4 月 13 日星期一 7 时 45 分 27 秒 112

113 4.3.5 过程调用 汇编语言程序中把某些能完成特定功能而又经常要用到的程序段, 编写成独立的模块, 将它称为过程或子程序 需要执行这段程序时就进行过程调用, 执行完毕, 再返回到原来调用它的主程序去 采用过程调用结构编程, 使程序结构清晰, 语句简练不用重复编写某个程序段, 也便于修改 子程序本身又可调用其它子程序, 称为子程序嵌套 2015 年 4 月 13 日星期一 7 时 45 分 27 秒 113

114 4.3.5 过程调用 1. 子程序使用 掌握以下几点 : 子程序模块化 ; 子程序属性,NEAR FAR; 调用子程序用 CALL 指令, 返回调用程序用 RET 指令 ; 子程序说明的撰写, 包括 : 功能描述, 使用的寄存器 存储单元, 入口 出口参数, 调用的其他子程序名称 ; 子程序允许嵌套调用 ( 层数不限, 决定于堆栈空间 ); 2015 年 4 月 13 日星期一 7 时 45 分 28 秒 114

115 4.3.5 过程调用 掌握以下几点 ( 续 ): 进入子程序后, 首先要保护主程序的运行状态 ( 标志位 ) 和使用的寄存器内容 ( 称为保护现场 ), 退出子程序前要恢复现场 调用前, 要先确定子程序中使用哪些寄存器, 并定义入口参数和出口参数 参数传递可利用寄存器 存储单元或堆栈 ( 要用 BP 寻址 ) 等几种方式 2015 年 4 月 13 日星期一 7 时 45 分 28 秒 115

116 例 1 二进制数 (0-F) 转换成 ASCII( 0 - F ) 的子程 序 BIN2ASC PROC ; 要转换的二进制数在 AL 的低四位 ; 转换结果 ASCII 仍在 AL 中 CMP AL, 9 JA A2F; 高于 9, 则为 A-F ADD AL, 30H;0-9 时调整 0-9 为 ASCII 码 30-39H JMP DONE A2F: ADD AL, 37H; 否则调整 A-F 的 ASCII 为 41-46H DONE: RET BIN2ASC ENDP 调用方法 :( 在主程序中 ) MOV AL, 0CH; 采用寄存器 AL 进行参数传递行 CALL BIN2ASC (AL 中有 0CH 的 ASCII 码 43H, C ) 2015 年 4 月 13 日星期一 7 时 45 分 28 秒 116

117 例 2 字符串处理程序设计 对字符串进行操作时, 往往需要确定它的长度 通常字符串结束标志以 CR(0DH) 或 $(24H) 作标志 所以可以用扫描 CR 或 $ 的方法计算出串长 在计算串长时, 应注意串长一般应小于 255 个字节 2015 年 4 月 13 日星期一 7 时 45 分 28 秒 117

118 简化的主流程图 开始 求串长 求串长子程序流程 求串长 初始化指针 / 计数器串长加 1 串长 <256? Y 显示串长高位 显示串长低位 结束 N 警告 : 太长 当前字符是 $? N 搜索 CR 字符同时指针增量 找到? 存串长 返回 2015 年 4 月 13 日星期一 7 时 45 分 28 秒 118 Y Y N

119 程序如下 : DATA SEGMENT STRING DB This is a string,0dh, $ LENGTH1 DW?; 串长度存放在这里 CR DB 0DH MESSAGE DB The string is too long!,0dh,0ah, $ DATA ENDS CODE MAIN BEGIN: SEGMENT ASSUME CS:CODE,DS:DATA PROC FAR MOV AX,DATA MOV ES,AX MOV DS,AX 2015 年 4 月 13 日星期一 7 时 45 分 28 秒 119

120 CALL STRLEN ; 调用子程序计算串长 MOV DX,LENGTH1 ; 结果在 DX 寄存器中 CMP DX,100H JB NEXT1 ; 若 (DX)<100H, 转 LEA DX,MESSAGE ; 若 (DX) 100H, MOV AH,9 INT 21H ; 显示信息 JMP NEXT2 NEXT1: MOV DH,DL ; 串长暂存在 DH 中 MOV CL,4 SHR DL,CL ; 取串长高 4 位 CMP DL, 年 4 月 13 日星期一 7 时 45 分 28 秒 120

121 JBE LP ; 9, 转 ADD DL,7 ;>9, 加 7 LP: ADD DL,30H ; 高 4 位转换为 ASCII 码 MOV AH,6 INT 21H ; 显示这个 ASCII 码 MOV DL,DH ; 取暂存串长 AND DL,0FH ; 取串长低 4 位 CMP DL,9 JBE LP1 ; 9, 转 ADD DL,7 ;>9, 加 7 LP1: ADD DL,30H ; 低 4 位转换为 ASCII 码 MOV AH,6 INT 21H ; 显示该 ASCII 码 2015 年 4 月 13 日星期一 7 时 45 分 28 秒 121

122 MOV DL, H MOV AH,6 INT 21H ; 显示 H NEXT2: MOV AH,4CH INT 21H ; 返回 DOS MAIN ENDP ; 主程序结束 ; 2015 年 4 月 13 日星期一 7 时 45 分 28 秒 122

123 ;----- 计算串长的子程序 STRLEN PROC LEA DI,STRING MOV CX,0FFFFH ;(CX)=-1 MOV AL,CR ;(AL)=0DH MOV AH, $ ;(AH)=24H CLD ;DF=0 AGAIN: INC CX ; 串长加 1, 初始值 (CX)=0 CMP CX,100H JAE DONE ; 串长 >255, 则结束 CMP [DI],AH ; 本字符是 $? JE DONE ; 是, 则结束 SCASB ; 本字符是 CR? JNE AGAIN ; 未找到, 返回继续 DONE: MOV LENGTH1,CX; 找到,LENGTH1 串长 RET ; 返回主程序 STRLEN ENDP 2015 年 4 月 13 日星期一 7 时 45 分 28 秒 123

124 CODE ENDS END BEGIN 2015 年 4 月 13 日星期一 7 时 45 分 29 秒 124

125 2. 子程序嵌套与递归调用 子程序格式和调用 子程序名 PROC 类型指令序列 RET 子程序名 ENDP 子程序调用与子程序返回由 CALL 和 RET 指令实现 递归调用子程序调用子程序自身 主程序 子程序 SUB1 子程序 SUB2 子程序 SUB CALL SUB1 CALL SUB2 CALL SUB3 中断点 1 中断点 2 中断点 3 RET RET RET 2015 年 4 月 13 日星期一 7 时 45 分 29 秒 125

126 3. 子程序的参数传递 编写子程序时, 很重要的一个工作是如何把参数传给子程序, 这个过程叫参数传送 传送方法有 : (1) 把参数放在 CPU 内部寄存器中 (2) 把参数放在变量中 (3) 把参数放在地址表中 (4) 利用堆栈传送参数 2015 年 4 月 13 日星期一 7 时 45 分 29 秒 126

127 举例介绍第 4 种方法 : 主程序中将参数或参数地址保存在堆栈中, 在子程序中将参数从堆栈取出来 例 : 将一用十六进制表示的字符 ASCII 码, 然后送到屏幕上显示 汇编程序如下 : 2015 年 4 月 13 日星期一 7 时 45 分 29 秒 127

128 ; DATA SEGMENT NUM DW 25AFH ; 要显示的数 STRING DB 4 DUP(?),13,10, $ DATA ENDS STACK SEGMENT DB 100 DUP(?) TOP EQU $ STACK ENDS CODE SEGMENT 堆栈 ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK BEGIN: MOV AX,DATA (SP) MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV SP,TOP LEA BX,STRING ; 取变量偏址 PUSH BX ; 将偏址压栈 PUSH NUM ; 将变量压栈 AF (TOP) 0060H 0062H 0064H 2015 年 4 月 13 日星期一 7 时 45 分 29 秒 128

129 CALL BINHEX;(SP)=005EH CS:01131 LEA DX,STRING ;(DX)=0002H MOV AH,9 INT 21H MOV AH,4CH INT 21H ;*********************** BINHEX PROC PUSH BP ;(SP)=005CH2 MOV BP,SP ;(BP)=005CH PUSH AX ;(SP)=005AH PUSH DI ;(SP)=0058H PUSH CX ;(SP)=0056H PUSH DX ;(SP)=0054H (SP) 返回 (IP) 地址 1 主程序中入栈参数 原 (BP) AF (TOP) 005CH 005EH 0060H 0062H 0064H 2015 年 4 月 13 日星期一 7 时 45 分 29 秒 129

130 PUSHF ;(SP)=0052H MOV AX,SS:[BP+4] ;(AX)=25AFH MOV DI, SS:[BP+6] ;(DI)=0002H ADD DI, LENGTH STRING-4 ;(DI)=0005H MOV DX,AX ;(DX)=25AFH MOV CX,4 STD ; 从后往前存 AGAIN: AND AX,0FH ; 第一次 (AX)=000FH CALL HEXD ; 转换为 ASCII 码 STOSB PUSH CX MOV CL,4 SHR DX,CL ; 逻辑右移 4 位 MOV AX,DX ; 第 1 次 (AX)=025AH POP CX LOOP AGAIN ;(CX)-1=0? 不等, 转 (BP) xx xx AF (TOP) 005CH 005EH 0060H 0062H 0064H 2015 年 4 月 13 日星期一 7 时 45 分 29 秒 130

131 POPF POP DX POP CX POP DI POP AX POP BP RET 4; 将返回地址后 4 字节弹出 BINHEX ENDP ;******************** (SP) HEXD PROC CMP AL,0AH JL LP ADD AL,7 LP: ADD AL,30H RET HEXD ENDP CODE ENDS END BEGIN xx xx AF (TOP) 005CH 005EH 返回的 IP 0060H 0062H 0064H 2015 年 4 月 13 日星期一 7 时 45 分 29 秒 131

132 从本例可知, 通过堆栈传递的两个参数分别为 : 变量 NUM 的内容 25AFH 和变量 STRING 的偏移地址 0002H 这两个参数在调用子程序之前压入堆栈, 当 CALL 指令返回时, 其 (SP)=0060H, 不是初值 0064H 故采用带参数返回指令 RET 4 本例重点掌握 : * 进一步了解堆栈的使用 * 学会 RET n 的应用 * 子程序嵌套 2015 年 4 月 13 日星期一 7 时 45 分 30 秒 132

133 课堂作业 统计学生成绩设有 N 个学生成绩分别为 : 试编制程序分别统计 <60 分 分 分 分 分以及 100 分的学生人数, 并分别存放于 S1 S2 S3 S4 S5 和 S6 单元中 [ 提示 ] 算法较简单, 成绩分等级部分采用分支结构, 统计所有学生部分采用循环结构完成 2015 年 4 月 13 日星期一 7 时 45 分 30 秒 133

134 课堂作业 流程图 AA N 开始 初始化 取一个成绩 <60? Y N <70? Y N =100? N A5 S5+1 Y S6+1 NEXT 修改地址指针 循环结束? Y 结束 计数单元循环次数首地址 S2+1 S 年 4 月 13 日星期一 7 时 45 分 30 秒 134 A2 A1

135 DATA SEGMENT grade DW xx,xx,,xx S1 DW? S2 DW? S3 DW? S4 DW? S5 DW? S6 DW? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV S1, 年 4 月 13 日星期一 7 时 45 分 30 秒 135

136 MOV S6,0 LEA BX,grade MOV CX,N AA:MOV AX,[BX] CMP AX,60 JL A1 CMP AX,100 JNE A5 INC S6 JMP SHORT NEXT A5: INC S5 JMP SHORT NEXT A4: A3: A2: A1: NEXT: ADD BX,2 LOOP AA CODE ENDS END START 2015 年 4 月 13 日星期一 7 时 45 分 30 秒 136

137 本章结束 2015 年 4 月 13 日星期一 7 时 45 分 30 秒 137

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20 (Jump) (Loop) (Conditional jump) CMP CALL AND SAR/SHR TEST JMP NOT SAL/SHL Jnnn* OR RCR/ROR LOOP XOR RCL/ROL RETn * nnn, JNE JL -128 127-32,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far

More information

<4D6963726F736F667420576F7264202D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

<4D6963726F736F667420576F7264202D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63> 因 为 路 过 你 的 路, 因 为 苦 过 你 的 苦, 所 以 快 乐 着 你 的 快 乐, 追 逐 着 你 的 追 逐 内 容 简 介 本 书 根 据 2005 年 下 半 年 实 施 的 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 嵌 入 式 系 统 设 计 师 级 考 试 大 纲 精 神, 在 深 入 研 究 历 年 计 算 机 技 术 与 软

More information

untitled

untitled 8086/8088 CIP /. 2004.8 ISBN 7-03-014239-X.... TP313 CIP 2004 086019 16 100717 http://www.sciencep.com * 2004 8 2004 8 1 5 500 787 1092 1/16 16 1/2 391 000 1 2 ii 1 2 CAI CAI 3 To the teacher To the student

More information

幻灯片 1

幻灯片 1 3 8086 Tel:2656809 tjx@csu.edu.cn 2005-9-14 1 2005-9-14 2 8086 8 8086 8086 7 2005-9-14 3 PC 2005-9-14 4 2005-9-14 5 81616 2005-9-14 6 [ ] MOV AX, 3064H AX=3064H 16AX OP 64H 30H 2005-9-14 7 16 AX BX CX

More information

(2) Function 0BH: Function 0CH: (pixel, picture element) Function 0DH: Function 0FH: Function 13H:

(2) Function 0BH: Function 0CH: (pixel, picture element) Function 0DH: Function 0FH: Function 13H: (1) INT 10H Function 00H: Function 01H: Function 02H: Function 03H: Function 05H: Function 06H: Function 07H: Function 08H: Function 09H: Function 0AH: (2) Function 0BH: Function 0CH: (pixel, picture element)

More information

第四章 8086汇编语言程序设计

第四章 8086汇编语言程序设计 第四章汇编语言程序设计 几个概念 8086 汇编语言的语句 8086 汇编中的伪指令 8086 汇编中的运算符 汇编语言程序设计 系统调用 几个概念 1. 汇编语言 2. 汇编语言源程序 3. 汇编 4. 汇编程序 5. 什么是汇编语言 (Assembly Language)? 6. 使用指令的助记符 符号地址和标号等编写的程序设计语言 7. 每条指令都有对应的机器码, 不同的 CPU 使用不同的汇编语言

More information

42 2141601026 2016 11 27 2 1.1............................................. 2 1.2....................................... 2 1.2.1......................................... 2 1.3.............................................

More information

Microsoft Word - em78 sub program.doc

Microsoft Word - em78 sub program.doc 一 二进制数转换为 ASCⅡ 码 将一个字节的二进制数转换为两位 16 进制数的 ASCⅡ 码 main: mov a,@0x9f ; 二进制数为 0x9f mov 0x30,a ; 二进制数存入 0x30 mov a,@0x02 mov 0x10,a ;0x10 中存放转换次数 mov a,@0x31 mov 0x04,a ;0x04 中为转换后数据存放地址 mov a,0x30 B1: ; 取

More information

微型计算机原理及应用试题 机电96

微型计算机原理及应用试题   机电96 微 机 原 理 试 题 ( 一 ) 总 分 : 一 : 单 项 选 择 题 ( 每 题 1 分, 共 10 分 ) 1. 微 型 计 算 机 中 主 要 包 括 有 ( ) A) 微 处 理 器 存 储 器 和 I/O 接 口 B) 微 处 理 器 运 算 器 和 存 储 器 C) 控 制 器 运 算 器 和 寄 存 器 组 D) 微 处 理 器 运 算 器 和 寄 存 器 2. DMA 控 制 器

More information

第5章:汇编语言程序设计

第5章:汇编语言程序设计 第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令

More information

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2 第 3 章 8086 的寻址方式和指令系统 (2) 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 1 3.3 8086 指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2 3.3.1 数据传送指令 可实现 存储器 立即数 段寄存器 CS DS

More information

第三章 宏汇编语言程序设计

第三章 宏汇编语言程序设计 微机原理与接口技术 实验指导书 淮阴师范学院计算机科学与技术系 实验一代码转换 一 实验目的 : 1 掌握顺序 分支程序的设计方法 2 编制顺序 分支程序 3 上机调试顺序 分支程序, 掌握源代码转换的基本方法 4 学会用 INT 21 功能实现人机对话 二 实验内容 本程序所实现的功能是 : 键入小写字母 ( 最多 20 个 ) 以. 号作为结束标志, 输出相应的大写字母 用 INT 21H 中的的

More information

Microsoft PowerPoint - CH3_3.ppt [只读] [兼容模式]

Microsoft PowerPoint - CH3_3.ppt [只读] [兼容模式] 第三章汇编语言程序设计 ( 三 ) Assembly Language Programming(3) 格式 # 伪指令 # DOS/BIOS 调用 ( 简单了解 ) 重点 : 数据结构表示 程序结构 变量 指针 程序流控制 ( 条件 分支 循环 ) 程序设计方法 ----- 程序设计举例 微机系统与接口东南大学 1 DATA 汇编语言程序举例 (1) 分块传送 SEGMENT STRG DB 256

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

組譯與連結(Ver6

組譯與連結(Ver6 Intel 8088/86 CPU GND 1 40 VCC GND 1 40 VCC A14 2 39 A15 AD14 2 39 AD15 A13 3 38 A16/S3 AD13 3 38 A16/S3 A12 4 37 A17/S4 AD12 4 37 A17/S4 A11 5 36 A18/S5 AD11 5 36 A18/S5 A10 A9 6 7 35 34 A19/S6 SS0 (

More information

2010-10-8 22:23:13 solo estoy(276441700) 老 师 SIMD 技 术 ALU 同 时 处 理 的 数 据 长 度 只 能 是 ALU 最 大 位 数 的 整 数 分 之 一 对 吗 2010-10-8 22:25:16 solo estoy(276441700)

2010-10-8 22:23:13 solo estoy(276441700) 老 师 SIMD 技 术 ALU 同 时 处 理 的 数 据 长 度 只 能 是 ALU 最 大 位 数 的 整 数 分 之 一 对 吗 2010-10-8 22:25:16 solo estoy(276441700) 微 机 系 统 与 接 口 技 术 群 答 疑 集 锦 08 级 学 生 QQ 群 答 疑 杨 全 胜 整 理 2011.9 2010-10-8 22:23:13 solo estoy(276441700) 老 师 SIMD 技 术 ALU 同 时 处 理 的 数 据 长 度 只 能 是 ALU 最 大 位 数 的 整 数 分 之 一 对 吗 2010-10-8 22:25:16 solo estoy(276441700)

More information

Microsoft PowerPoint - C15_LECTURE_NOTE_06

Microsoft PowerPoint - C15_LECTURE_NOTE_06 61 Flag-Control 8088/8086 MICROPROCESSOR PROGRAMMING CONTROL FLOW INSTRUCTIONS AND PROGRAM STRUCTURES LAHF SAHF CLC STC CMC CLI STI Load AH from flags Store AH into flags Clear carry flag Set carry flag

More information

DPJJX1.DOC

DPJJX1.DOC 8051 111 2K 1 2 3 ' ' 1 CPU RAM ROM / A/D D/A PC CPU 40 68 10 20 8 51 PIII 8051 2 MCS51 8051 8031 89C51 8051 8031 89C51? MCS51 INTEL INTEL 8031 8051 8751 8032 8052 8752 8051 8051 8051 MCS51 8031 8031

More information

Microsoft PowerPoint - C15_LECTURE_NOTE_06

Microsoft PowerPoint - C15_LECTURE_NOTE_06 8088/8086 MICROPROCESSOR PROGRAMMING CONTROL FLOW INSTRUCTIONS AND PROGRAM STRUCTURES 8088/8086 MICROPROCESSOR PROGRAMMING CONTROL FLOW INSTRUCTIONS AND PROGRAM STRUCTURES 61 Flag-Control 62 Compare 63

More information

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3 第 3 章 8086 的寻址方式和指令系统 (3) 2015 年 3 月 26 日星期四 11 时 3 分 17 秒 1 3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四

More information

幻灯片 1

幻灯片 1 字符串处理是指对一系列的字母或数字的代码进行相同功能的处理 计算机中字符代码一般都采用 ASCII 码, 每个字符的代码占一个字节, 一组字符串存放在一个连续的存储区中 存放在连续的存储区中的这组字符串, 可看为一个数据块 为了提高对字符串 ( 或数据块 ) 的处理效率,8086/8088 指令系统中专门提供了一组对字符串处理的指令, 这些指令包括 : 字符串传送指令 (MOVS) 字符串比较指令

More information

Microsoft Word - 实验8_ADDA.doc

Microsoft Word - 实验8_ADDA.doc 一. 实验目的 实验八数模与模数转换 (1) 了解数 / 模转换器的基本原理, 掌握 DAC0832 芯片的使用方法 (2) 了解模 / 数转换的基本原理, 掌握 ADC0809 的使用方法 二. 实验环境 1. 硬件环境 微型计算机 (Intel x86 系列 CPU) 一台, 清华科教仪器厂 TPC-2003A 微机接口实验装置一台 ; 数字 2. 软件环境 记忆示波器一台, 万用表一台 (1)Windows

More information

数据库系统概论

数据库系统概论 2. 减法指令 8086/8088 共有 5 条减法指令 1 不带 CF 的减法指令 (SUB) 格式 :SUB DST, SRC 功能 :(1)DST (DST)-(SRC) (2) 根据差设置 6 个状态标志 2 带 CF 的减法指令 (SBB) 格式 :SBB DST, SRC 功能 : (1)DST (DST)-(SRC)-CF (2) 根据差设置 6 个状态标志 3 减 1 指令 (DEC)

More information

微机第02章1(指令寻址)

微机第02章1(指令寻址) 微机原理及应用 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 西华大学电气信息学院 1 第 03 章 80X86 的寻址方式和指令 ( 本章内容 ) 3.1 指令的格式 3.2 8086/8088 的寻址方式 3.3 指令系统 3.3.1 数据传送指令 3.3.2 算术运算指令 3.3.3 逻辑运算与移位指令 3.3.4 串操作指令

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

<4D F736F F D20CEA2BBFAD4ADC0EDC8EDBCFECAB5D1E9D6B8B5BCCAE92E646F63>

<4D F736F F D20CEA2BBFAD4ADC0EDC8EDBCFECAB5D1E9D6B8B5BCCAE92E646F63> 软件实验 实验 1 汇编程序的编写与调试实验 一 实验目的 1. 熟练掌握 DEBUG 的常用命令, 学会用 DEBUG 调试程序 2. 深入了解数据在存储器中的存取办法, 及堆栈中数据的压入和弹出 3. 掌握各种寻址办法以及简单指令的执行过程 二 实验内容 1. 设堆栈指针 SP=2000H,AX=3000H,BX=5000H, 请编一程序段将 AX 的内容和 BX 的内容进行交换 请用堆栈作为两寄存器交换内容的中间存储单元,

More information

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示 实验题目 : 串行接口芯片 8251 实验目的 : 1. 掌握 8251 的工作方式及应用 2. 了解有关串口通讯的知识 串行接口芯片 8251 3. 掌握使用 8251 实现双机通讯的软件编程和电路连接 实验设备 : IA-32 架构的微机系统及应用教学平台两套 实验原理 : 1. 8251 的基本性能 性能 : 8251 是可编程的串行通信接口, 可以管理信号变化范围很大的串行数据通信 有下列基本

More information

习 题 一

习  题  一 第 1 页共 13 页 微机原理与接口技术 A 卷 一 填空题 ( 共计 20 分 每个空 2 分 ) 1 已知 [X] 补 =01100011B, 求 X=( ) ( 结果用十进制表示 ) [Y] 补 =11111001B, 求 Y=( ) ( 结果用十进制表示 ) 2 8088CPU 的地址总线为多少条 ( ); 直接寻址的内存空间为多少 ( ) 3 已知 DS=2000H, 内存 (20200H)=FFH,(20201H)=22H

More information

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt 8088/8086 MICROPROCESSOR PROGRAMMING INTEGER INSTRUCTIONS AND COMPUTATIONS 8088/8086 MICROPROCESSOR PROGRAMMING INTEGER INSTRUCTIONS AND COMPUTATIONS 5.1 Data-Transfer Instructions 5.2 Arithmetic Instructions

More information

Microsoft PowerPoint - 微原-第3章3.ppt [兼容模式]

Microsoft PowerPoint - 微原-第3章3.ppt [兼容模式] 本教案内容 第 3 章 8086CPU 指令系统 1. 汇编语言指令 9. 转移指令 10. 2. 8086 指令分类循环控制指令 11. 子程序调用返回 3. 数据与转移地址的指令寻址方式 12. 中断调用返回指 4. 数据传送类指令令 5. 算术运算类指令 13. 字符串操作指令 6. 逻辑运算类指令 14. I/O 输入输出指令 7. 移位类指令 15. 其它指令 8. 标志位操作指令 16.

More information

数据库系统概论

数据库系统概论 2. 减法指令 8086/8088 共有 5 条减法指令 1 不带 CF 的减法指令 (SUB) 格式 :SUB DST, SRC 功能 :(1)DST (DST)-(SRC) (2) 根据差设置 6 个状态标志 2 带 CF 的减法指令 (SBB) 格式 :SBB DST, SRC 功能 : (1)DST (DST)-(SRC)-CF (2) 根据差设置 6 个状态标志 3 减 1 指令 (DEC)

More information

Microsoft PowerPoint - Ch3-8086CPUæ„⁄令系ç»�(3)-æŁ°æ“®ä¼€é•†æ„⁄令

Microsoft PowerPoint - Ch3-8086CPUæ„⁄令系ç»�(3)-æŁ°æ“®ä¼€é•†æ„⁄令 2017 版 微机原理与系统设计 第 3 章 8086CPU 指令系统 董明皓, 博士 西安电子科技大学 dminghao@xidian.edu.cn 目录 (12 课时 ) 1 2 3 4 5 汇编语言基本概念 8086 指令分类数据与转移地址的寻址方式 8086 的六类指令总结 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn 2 基础知识引入

More information

Microsoft Word - 实验4_IO控制_INT.doc

Microsoft Word - 实验4_IO控制_INT.doc 一. 实验目的 实验四 (1) 简单输入输出 掌握简单并行输入输出接口的工作原理及使用方法, 进一步熟悉掌握输入输出单元的功能和使用 二. 实验环境 1. 硬件环境微型计算机 (Intel x86 系列 CPU) 一台, 清华科教仪器厂 TPC-2003A 微机接口实验装置一台, 扩充芯片 74LS273/74LS244; 数字记忆示波器一台. 2. 软件环境 (1)Windows XP 操作系统,

More information

Ps22Pdf

Ps22Pdf ( ) ( 150 ) 25 15 20 40 ( 25, 1, 25 ), 1. A. B. C. D. 2. A. B. C. D. 3., J = 1 H = 1 ( A B, J', J, H ) A. A = B = 1, J' =0 B. A = B = J' =1 C. A = J' =1, B =0 D. B = J' = 1, A = 0 4. AB + AB A. AB B. AB

More information

<4D F736F F F696E74202D DB5DAB0CBBDB22DBBE3B1E0D3EFD1D4B3CCD0F22E >

<4D F736F F F696E74202D DB5DAB0CBBDB22DBBE3B1E0D3EFD1D4B3CCD0F22E > 第八讲 授课教师 : 陆俊林王箫音 2012 年春季学期 主要内容 一 汇编语言的主要特点 二 汇编语言程序的结构 三 汇编语言的基本语法 四 汇编语言程序的开发调试 教材相关章节 : 微型计算机基本原理与应用 ( 第二版 ) 第 5 章汇编语言的基本语法第 6 章汇编语言程序设计及应用 1 主要内容 一 汇编语言的主要特点 二 汇编语言程序的结构 三 汇编语言的基本语法 四 汇编语言程序的开发调试

More information

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7>

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7> 能源与动力工程学院 结构化编程 结构化程序设计 循环 循环结构 确定性循环 非确定性循环 I=1 sum=sum+i I = I +1 陈 斌 I>100 Yes No 目录 求和 :1+2+3++100 第四节循环的应用 PROGRAM GAUSS INTEGER I, SUM 计数器 SUM = 0 DO I = 1, 100, 1 SUM = SUM + I print*, I, SUM DO

More information

主要内容 : 汇编语言源程序的结构汇编语言语句格式伪指令语句功能调用汇编语言程序设计方法宏汇编和条件汇编 2015 年 3 月 30 日星期一 7 时 58 分 57 秒 2

主要内容 : 汇编语言源程序的结构汇编语言语句格式伪指令语句功能调用汇编语言程序设计方法宏汇编和条件汇编 2015 年 3 月 30 日星期一 7 时 58 分 57 秒 2 第 4 章 汇编语言程序设计 (1) 2015 年 3 月 30 日星期一 7 时 58 分 56 秒 1 主要内容 : 汇编语言源程序的结构汇编语言语句格式伪指令语句功能调用汇编语言程序设计方法宏汇编和条件汇编 2015 年 3 月 30 日星期一 7 时 58 分 57 秒 2 机器语言 二进制数形式的指令和数据 B0 64 是什么意思? 这就是机器语言 既不直观, 又不易理解和记忆. MOV

More information

一、填空题

一、填空题 微机原理及汇编语言复习题一 选择题 1. 完整的计算机系统应包括 ( ) A. 运算器 控制器 寄存器组 总线接口 B. 外设和主机 C. 主机和应用程序 D. 配套的硬件设备和软件系统 2. 计算机系统中的存储器系统是指 ( ) A.RAM B.ROM C. 主存储器 D. 内存和外存 3. 机器语言是指 ( ) A. 用英语缩写词表示的面向机器的程序设计语言 B. 用二进制代码表示的程序设计语言

More information

数据库系统概论

数据库系统概论 指令系统 是指 CPU 能完成的所有 指令的集合, 它是在 CPU 设计时就确定了的 所以, 对不同的 CPU, 其指令系统中所包含的具体指令将是各不相同的 但 8088/8086 CPU 的指令系统是完全一样的 8088/8086 CPU 的指令系统可分成下面 9 类 : (1) 数据传送指令 ; (2) 算术运算指令 ; (3) 逻辑运算指令 ; (4) 移位指令 ; (5) 标志处理指令和 CPU

More information

目 录

目 录 1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12

More information

微机原理与接口技术 郭玉洁

微机原理与接口技术 郭玉洁 微机原理与接口技术 郭玉洁 实验安排 汇编语言程序设计实验编程测验硬件接口应用实验综合应用实验 2 学时 1 学时 4 学时 4 学时 一 实验内容 二 实验目的 三 实验方法 实验报告要求 1 文字叙述设计思路 2 流程图 四 实验源程序 ( 必要的文字注释 ) 五 实验结果 六 实验中遇到的问题及解决方法 七 心得体会 ( 学会编程 调试等学习的方法 ) 汇编语言实验内容 1 学习并掌握 IDE86

More information

(1) 若两个数种有一个是奇数, 则将奇数存入 A 中, 偶数存入 B 中 ; (2) 若两个数均为奇数, 则将两数均加 1 后存回原变量 ; (3) 若两个数均为偶数, 则两个变量均不改变 19. 写一段子程序 SKIPLINES, 完成输出空行的功能 空行的行数由用户在主程序中通过键盘输入, 并

(1) 若两个数种有一个是奇数, 则将奇数存入 A 中, 偶数存入 B 中 ; (2) 若两个数均为奇数, 则将两数均加 1 后存回原变量 ; (3) 若两个数均为偶数, 则两个变量均不改变 19. 写一段子程序 SKIPLINES, 完成输出空行的功能 空行的行数由用户在主程序中通过键盘输入, 并 汇编语言程序设计练习题 1. 逆序输出字符串 BASEDADDRESSING 2. 从键盘上输入 2 个一位数, 求出它们的和 ( 假设和不超过 1 位 ) 3. 试编写一段程序, 要求在长度为 100H 字节的数组中, 找出大于 42H 的无符号数的个数并存入字节单元 UP 中 ; 找出小于 42H 的无符号数的个数并存入字节单元 DOWN 中 4. 试编写一段程序, 要求对键盘输入的小写字母用大写字母显示出来

More information

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0 SH79F6431 1. SH79F6431 1T 8051 FLASH SH79F JET51 Keil µ vision JTAG 1.1. SH79F6431 LQFP64 1.2. (Target Board) SH79F6431 1 V 1.0 1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F6431 1 2 1 B. 1(VCC/GND)

More information

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt 8088/8086 MICROPROCSOR PROGRAMMING INTEGER INSTRUCTIONS AND COMPUTATIONS The MOVE The move (MOV) instruction is used to transfer a byte or a word of data from a source operand to a destination operand

More information

PowerPoint Presentation

PowerPoint Presentation 一. 上机环境 应用软件系统软件硬件 4.5 汇编语言程序设计上机步骤与调试方法 用户程序 :ABC.exe 等 操作系统 :DOS 系统编辑器 : EDIT.exe 编程序 : MASM.exe 连接程序 :LINK.exe 调试程序 :DEBUG.exe CPU 存储器 (ROM RAM) I/O 接口 输入 输出设备 编辑源程序 EDIT ABC.ASM 二. 上机步骤 1 D:>EDIT ABC.ASM

More information

提纲. 1 实验准备. 2 从实模式进入保护模式. 3 小结 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, / 11

提纲. 1 实验准备. 2 从实模式进入保护模式. 3 小结 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, / 11 .. 软件综合实验之操作系统 进入保护模式 陈香兰 中国科学技术大学计算机学院 July 1, 2016 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, 2016 1 / 11 提纲. 1 实验准备. 2 从实模式进入保护模式. 3 小结 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, 2016 2 / 11 实验准备 实验环境准备

More information

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63> 七段顯示器控制電路四位數 _ 使用解碼器驅動 +5 V 10 uf 8.2 k 12 MHz 20 pf 1 2 3 4 5 6 7 8 9 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET 10 P3.0 11 12 13 14 15 16 17 18 19 20 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 XTAL2 XTAL1

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

微處理機期末專題

微處理機期末專題 微 處 理 機 期 末 專 題 自 動 鋼 琴 組 員 :b92611004 羅 鈞 瑋 b92611008 吳 妍 儂 b92611038 吳 韋 靜 b92611042 林 佳 穎 一 簡 介 本 組 的 主 題 是 自 動 鋼 琴 在 播 放 音 樂 的 同 時, 鋼 琴 會 自 動 按 下 琴 鍵, 被 按 下 的 琴 鍵 所 對 應 到 的 音 階, 就 是 正 在 撥 放 的 樂 曲 的

More information

Microsoft Word - 作业2008.doc

Microsoft Word - 作业2008.doc 微机系统与接口 课程作业(2007-2008) ( 标清题号无须抄题 ) 习题一 ( 第 1 章 ) 1. 写出下列二进制数的原码 反码和补码 ( 设字长为 8 位 ): ⑴ +010111 ⑵ +101011 ⑶ -101000 ⑷ -111111 2. 当下列各二进制分别代表原码 反码和补码时, 其等效的十进制数值为多少? ⑴ 00001110 ⑵ 11111111 ⑶ 10000000 ⑷ 10000001

More information

第六章 微型计算机的输入输出

第六章  微型计算机的输入输出 第九章中断与中断管理 第九章中断与中断管理 9.1 中断原理 9.2 中断系统组成及其功能 9.3 中断源识别及中断优先权 9.4 8086 中断系统 9.5 可编程中断控制器 8259 9.6 IBM-PC 机硬件中断 第九章中断与中断管理 9.1 中断原理 9.2 中断系统组成及其功能 9.3 中断源识别及中断优先权 9.4 8086 中断系统 9.5 可编程中断控制器 8259 9.6 IBM-PC

More information

Microsoft PowerPoint - chapter6.ppt

Microsoft PowerPoint - chapter6.ppt 本章目標 了解模組化與結構化程式設計技巧 了解 80x86 的程式連結與程式模組宣告方式 了解副程式 巢路副程式 與遞回副程式 了解副程式的參數傳遞方式 了解巨集指令的定義與使用 了解巨集指令相關的假指令 6.1 模組化程式設計 組合語言的模組化程式設計通常由下列幾個層次輔助完成 : 1. 副程式 (subroutine) 2. 組譯程式假指令 3. 巨集指令 (macro) 4. 中斷結構 (interrupt

More information

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx 第五讲 授课教师 : 陆俊林王箫音 2012 年春季学期 主要内容 一 寻址方式概述 二 数据的寻址方式 三 转移地址的寻址方式 教材相关章节 : 微型计算机基本原理与应用 ( 第二版 ) 第 4 章寻址方式与指令系统 1 主要内容 一 寻址方式概述 二 数据的寻址方式 三 转移地址的寻址方式 2 指令的组成 指令由操作码和操作数两部分组成 操作码操作数 MOV AX, 8726H ADD AX,

More information

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2 第 3 章 8086 的寻址方式和指令系统 (1) 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 1 主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2 3.1 8086 的寻址方式 两种不同的类型 : 一类是程序地址 ( 在代码段中 ) 的寻址方式 ; 另一类是操作数地址的寻址方式

More information

Microsoft PowerPoint - os_4.ppt

Microsoft PowerPoint - os_4.ppt 行 程 資 科 系 林 偉 川 行 程 概 念 行 程 與 程 式 主 要 的 不 同 點 : 程 式 是 被 放 在 外 部 的 儲 存 裝 置 如 磁 碟 上, 而 行 程 則 被 放 在 記 憶 體 中 程 式 在 儲 存 裝 置 中 是 靜 態 的, 而 行 程 在 記 憶 體 中 是 動 態 的, 它 會 隨 著 一 些 事 件 的 發 生 而 產 生 相 對 的 改 變 行 程, 就 是

More information

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D> 2018 版 微机原理与接口技术 第三章 8086CPU 指令系统 董明皓 dminghao@xidian.edu.cn 1 2 3 4 5 汇编语言基本概念汇编语言指令分类数据与转移地址的寻址方式 8086 的六类指令总结 1 2 3 4 5 汇编语言基本概念汇编语言指令分类数据与转移地址的寻址方式 8086 的六类指令总结 4. 8086 的指令系统 b b b b b 数据传送指令算术运算指令逻辑运算指令移位

More information

标题

标题 汇编语言程序设计 4.1 汇编语言程序设计基础 单片机的汇编语言程序设计步骤如下 : (1) 明确要解决的问题和要求 (2) 根据要解决的问题, 制定程序流程图 如程序较长, 可以先画出粗框图, 再根据要求进行细化 (3) 根据程序流程图, 编写程序 如果程序较长, 可按功能模块进行编写 (4) 对汇编语言程序进行调试, 并进行优化处理 程序流程图是用几何图形 ( 方框和圆框 ) 直线及文字说明描述程序

More information

3.3.3 逻辑运算和移位指令 1. 逻辑运算指令 运算规则 : 按位操作, 无进 / 借位 对标志位的影响 ( 除 NOT 指令外 ): CF OF SF ZF PF AF 0 0 u 根据运算结果设置 2015 年 3 月 30 日星期一 7 时 57 分 24 秒 2

3.3.3 逻辑运算和移位指令 1. 逻辑运算指令 运算规则 : 按位操作, 无进 / 借位 对标志位的影响 ( 除 NOT 指令外 ): CF OF SF ZF PF AF 0 0 u 根据运算结果设置 2015 年 3 月 30 日星期一 7 时 57 分 24 秒 2 第 3 章 8086 的寻址方式和指令系统 (4) 2015 年 3 月 30 日星期一 7 时 57 分 24 秒 1 3.3.3 逻辑运算和移位指令 1. 逻辑运算指令 运算规则 : 按位操作, 无进 / 借位 对标志位的影响 ( 除 NOT 指令外 ): CF OF SF ZF PF AF 0 0 u 根据运算结果设置 2015 年 3 月 30 日星期一 7 时 57 分 24 秒 2 1)

More information

中北大学

中北大学 欢迎下载我曾做过的微机原理与汇编语言课程设计 : 交通灯 程序在 M A S M, 唐都 TDN 86 / 88 实验系统上运行通过 指导老师对你这次编程的构想, 这想法看问题出发点在哪问的很少, 但 是细节会问很多 当时, 他有问我 : 你每次运行程序时都敲入 G = 0 0 0 0 : 2 0 0 0 这是什么意思 程序中有 MOV [SI],AX 语句, 你知道它干什么的 ( 中断矢量初始化

More information

HD61202 HD HD61203 HD61202, HY HY HD61202 HD61202 HD61203 HD =4096 RAMRAM LCD 2HD HD HD /32--

HD61202 HD HD61203 HD61202, HY HY HD61202 HD61202 HD61203 HD =4096 RAMRAM LCD 2HD HD HD /32-- HD61202 C-7 1 HD61202 HD61202 8 HD61203 HD61202, HY-12864 HY-19264 HD61202 HD61202 HD61203 HD61202 1 6464=4096 RAMRAM LCD 2HD61202 64 3HD61202 68 68 4HD61202 1/32--1/64 HD61202 HD61202 2 CS1,CS2,CS3 CS1

More information

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式]

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式] 本教案内容 第 3 章 8086CPU 指令系统 1. 汇编语言指令 9. 转移指令 10. 2. 8086 指令分类循环控制指令 11. 子程序调用返回 3. 数据与转移地址的指令寻址方式 12. 中断调用返回指 4. 数据传送类指令令 5. 算术运算类指令 13. 字符串操作指令 6. 逻辑运算类指令 14. I/O 输入输出指令 7. 移位类指令 15. 其它指令 8. 标志位操作指令 16.

More information

7688使用手冊V10.doc

7688使用手冊V10.doc TP-7688 . 2 2. 3 3. 5 4. 5 5. 6 6. 7 7. 8 8. 9 9.. 4. 7 2 2., 7x9 / 6x9 7x9.3() x 3.()mm 6x9 2.84() x 3.()mm 3 ASCII 7x9 95 ASCII 6x9 95 6x9 7 BIG5 6x9 3973 6x9 28 7x9 24 24 55 6x9 2 2 27 4.23mm (/6 inch)

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

CH559指令周期.doc

CH559指令周期.doc CH55X 汇编指令周期表 CH55X 汇编指令概述 : 型号包含 : a. 指令单周期型号 :CH557 CH558 CH559; b. 指令 4 周期型号 :CH551 CH552 CH553 CH554; c. 非跳转指令的指令周期数与指令字节数相同 ; d. 跳转指令含 MOVC/RET/CALL 通常比字节数多若干个周期 ; e.movc 指令多 4 或 5 个周期 ( 下条指令地址为奇数时多

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

Microsoft Word - P3.doc

Microsoft Word - P3.doc ;P3.3 警报器 ;* ( 程序转载请著明出处, 未声明可适应本站腾龙 /isp 开发套件 / 倚天版开发套件 * ;* E-mail:sxj1974@163.com (51c51 test web) 51 测试网, 自学单片机的网站 * ;* Create by : 石学军 www.51c51.com www.8951.com 更多例程请登陆网站 * org 00h ajmp dlv org 0030h

More information

Microsoft Word - 選擇_無解答2_.doc

Microsoft Word - 選擇_無解答2_.doc 選 擇 題 : 1 ( ) 下 列 何 者 為 W W W 的 通 訊 協 定? (A)H T T P ( H y p e r T e x t T r a n s f e r P r o t o c o l ) (B)S M T P ( S i m p l e M a i l T r a n s f e r P r o t o c o l ) (C) F T P ( F i l e T r a n

More information

Microsoft Word - ha0013s.doc

Microsoft Word - ha0013s.doc 文件编码 :HA0013s 简介 : 本文介绍利用 8 位微控制器控制 DV16100NRB 液晶显示驱动器的方法 该 LCM 由内置的 Hitachi HD44780 进行驱动及控制 本文应用中, 着重考虑如何使微控制器产生正确的信号以符合 LCM 所需的时序 若要获得详细的时序及指令信息, 请查阅 LCM 厂商的资料 LCM 能以 4 位或 8 位模式工作 在 4 位模式下, 传送一个字符或一条指令需两个传输周期完成

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

Microsoft PowerPoint - CH3_1.ppt [兼容模式]

Microsoft PowerPoint - CH3_1.ppt [兼容模式] 第三章汇编语言程序设计 Assembly Language Programming 格式 # 伪指令 # DOS/BIOS 调用 ( 简单了解 ) 重点 数据结构表示变量 指针程序结构程序流控制 ( 条件 分支 循环 ) 程序设计方法微机系统与接口东南大学 1 计算机程序设计语言 程序设计语言与汇编语言 机器语言 汇编语言和高级语言 高级语言 (High Level Language) 通用, 一般不要求了解结构原理

More information

1 TPIS TPIS 2 2

1 TPIS TPIS 2 2 1 1 TPIS TPIS 2 2 1. 2. 3. 4. 3 3 4 5 4 TPIS TPIS 6 5 350 Mark Coil F3/F6 350 M 150 M 25 M 7.12M 8 M F3 F6 F4 F7 F8 8M AA 7 350 28V 5V IC HCPL2731 0.5mA 6 8 (TPIS) TPIS 9 7 IC AT89C2051 AT89C2051 CMOS8

More information

今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单, 新加了个区段放病毒执行代码, 执行病毒代码, 最后跳回原入口点来执行原文件 下面就是感染后的代码的简单分析 : ; =============== S U B R O U T I N E =====================

今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单, 新加了个区段放病毒执行代码, 执行病毒代码, 最后跳回原入口点来执行原文件 下面就是感染后的代码的简单分析 : ; =============== S U B R O U T I N E ===================== 吾爱破解论坛 [LCG] [LSG] 立足软件安全和病毒分析最前端, 丰富的技术版块交相辉映, 由无数加密解密及反病毒爱好者共同维护, 留给世界一抹值得百年回眸的惊 艳, 沉淀百年来计算机应用之精华与优雅, 信息线条与生活质感淡定交融, 任岁月流转, 低调而奢华的技术交流与研究却是亘古不变 标题 : 一个感染样本的简单分析 作者 :ximo 今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单,

More information

四川省普通高等学校

四川省普通高等学校 四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

数据库系统概论

数据库系统概论 所谓寻址方式, 就是指令中用于说明操 作数所在地或者所在地地址的方法 8088/8086 的寻址方式分为两类 : 关于寻找数据的寻址方式 关于寻找转移地址的寻址方式 下面讲关于数据的寻址方式时, 均以数 据传送指令 MOV 为例讲解 MOV 指令格式如下 : MOV DST, SRC 助记符 目的操作数 指令完成的功能 : (DST) 源操作数 (SRC) 一. 关于寻找数据的寻址方式 ( 共 8

More information

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ]

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ] 作者 : 利尔达 MSP430 系列单片机的指令系统 1 CPU 内核组成 : 16 位的 (ALU) 算术运算单元 16 个寄存器 (PC SP SR R4~R15) 指令控制单元 2 存储器组织结构 3 外围模块寄存器地址 它们被分配在相应的字模块或字节模块当中 分配在 00-FFH 中为字节, 分配在 100-1FFH 中为字 4 寻址模式 : 5 指令格式 : 1) 书写格式标号指令助记符源操作数,

More information

untitled

untitled EDM16080-01 Model No.: Editor: 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

12232A LED LED LED EL EL CCFL EL CCF

12232A LED LED LED EL EL CCFL EL CCF 12232A 0 50-20 +70-30 +85 LED LED LED EL EL CCFL EL CCF 122 x 32 1/32Duty 1/5Bias 6:00 STN( ), EL LED EL/100VAC 400HZ LED/4.2VDC 1 / VDD-VSS 0 6.5 V Ta=25 LCD VDD-V0 0 12.0 V V1 0 VDD V VDD-VSS - 4.75

More information

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe   Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L 1 SH88F516 8051 64K FLASH 1024 EEPROM SH88F516 JET51 S-Lab Keil µ vision ISP51 Keil µ vision ISP51 ISP51 PC RS232 MCU SH88F516 SH88F516 1.1 SH88F516 1.1 SH88F516 SH88Fxx: QFP44, DIP40 RAM Flash E2 ADC

More information

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令 1. 介绍 Application Notes EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令 * 周期, 其余为单指令周期 ( 部分第一代芯片 JMP CALL RET RETL RETI JBS JBC JZ JZA DJZ DJZA 指令为 2

More information

一、单选题(本大题共15小题,每小题1分,共15分)

一、单选题(本大题共15小题,每小题1分,共15分) 北京大学信息科学技术学院考试试卷 科目 : 微机原理 A 姓名 : 学号 : 题号一二三四五六七八总分 分数 阅卷人 考试时间 : 2010 年 1 月 8 日任课教师 : 王克义装订线内请勿答题考场纪律 1. 请持学生证入场考试, 并按指定座位就座 ; 除必要的文具和教师指定的用具用书外, 其他所有物品包括手机 呼机 MP3 电子词典 书籍 笔记 纸张等严禁带入座位, 必须放在指定位置 凡有试题印制问题请向监考教师提出,

More information

Microsoft PowerPoint - CH2_1.ppt [兼容模式]

Microsoft PowerPoint - CH2_1.ppt [兼容模式] 第二章微型计算机指令系统 IA-16 微机系统结构 - 工作原理 8086/8088 微处理器周期性地执行指令 时钟 /T 周期 指令周期 总线周期 ( 内部操作 / 总线操作 ) 指令 --- 微机算术 逻辑和控制功能的实现基础 重点 : 信息交换方法 ( 数据流 ), 程序流控制 *11 目标地址传送 * 寻址方式 2 标志传送 3 转移控制 ( 转移指令 过程调用 中断 ) 微机系统与接口东南大学

More information

bingdian001.com

bingdian001.com 2016 14 1.5 21 1. 50% 20% 5% 10% A.2 B.10.5 C.10 D.2.1 A = 1/ - =50%20%/10%5%=2 2. 2015 1 1.2 1.5 2016 1.9 2015 A.50% B.90% C.75% D.60% A = / = =1.2 1.5=1.8 2016 =1.9-1 /1=0.9 =0.9/1.8=50% 3. A. B. C.

More information

F515_CS_Book.book

F515_CS_Book.book /USB , ( ) / L R 1 > > > 2, / 3 L 1 > > > 2 + - 3, 4 L 1 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 ( ) GSM 手机已连接到 GSM 网络 指示条越多, 接收质量越好 2 ...........................4.............................. 4 Micro SD (

More information

untitled

untitled SIMATIC S7-300 4/2 4/2 S7-300/S7-300F 4/4 4/4 CPU 312C - CPU 317F-2 DP 4/38 SIPLUS 4/38 SIPLUS CPU 312C, CPU 313C, CPU 314, CPU 315-2 DP 4/40 4/40 SM 321 4/46 SM 322 4/52 SM 323/SM 327 I/O 4/56 SIPLUS

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

Microsoft Word - 1.doc

Microsoft Word - 1.doc 微機處理原理與應用 計分計時器 指導教授 : 林達德 Ace 一隊 B90611004 林暐翔 B90611020 陳宇璿 B90611023 藍皓瑋 B90611030 沈彥志 一 動機 : 由於我們小組 4 人對籃球都很有興趣, 但平常打球時常會忘記比分, 所以我們就決定自製一個易於攜帶的面板在籃球比賽中使用, 其包含顯示兩隊分數 比賽剩餘時間等基本功能, 令外還將使用一個蜂鳴器在時間終了時鳴叫

More information

2006年国家公务员招录考试行测真题(A)

2006年国家公务员招录考试行测真题(A) 2006 年 中 央 国 家 机 关 公 务 员 录 用 考 试 行 政 职 业 能 力 测 验 (A) 真 题 说 明 这 项 测 验 共 有 五 个 部 分,135 道 题, 总 时 限 为 120 分 钟 各 部 分 不 分 别 计 时, 但 都 给 出 了 参 考 时 限, 供 你 参 考 以 分 配 时 间 请 在 机 读 答 题 卡 上 严 格 按 照 要 求 填 写 好 自 己 的 姓

More information

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc C 语言开发入门 课程教学大纲 ( 课程英文名称 ) 课程编号 :201409210011 学分 :5 学分学时 :60 学时 ( 其中 : 讲课学时 :37 学时上机学时 :23 学时 ) 先修课程 : 计算机导论后续课程 :C++ 程序设计适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 C 语言开发入门 是计算机各专业必修的基础课程, 是数据结构 C++ Java

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

instructions.PDF

instructions.PDF 94 SIMATIC (END) (END) Micro/WIN 32 (STOP) (STOP) CPU RUN STOP STOP CPU RUN STOP (WDR) (Watchdog Reset) (WDR) CPU WDR WDR ( ) I/O ( I/O ) SM (SM0 SM5 SM29 ) 25 0 ms 00 ms STOP 300ms 300ms WDR S7-200 CPU

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 177 [P179] (1) - [P181] [P182] (2) - for [P183] (3) - switch [P184] [P187] [P189] [P194] 178 [ ]; : : int var; : int var[3]; var 2293620 var[0] var[1] 2293620

More information

Microsoft Word - 新正文(1-12).doc

Microsoft Word - 新正文(1-12).doc 第 5 章汇编语言程序设计 汇编语言是一种面向机器的低级语言, 利用汇编语言设计的程序效率高 实时性强, 还能直接控制硬件, 能充分发挥硬件的潜力 但现在主流的开发工具是高级语言, 所以本章不仅介绍 DOS 环境下的汇编语言程序设计, 而且介绍了 Windows 下的汇编开发方法 汇编语言源程序的组成部分有 : 模块 段 子程序和宏等 第 1 部分介绍汇编语言的语法规定, 着重叙述汇编语言程序的格式

More information

学年第二学期校历

学年第二学期校历 计算机与通信综合实验指导书 由于参加计算机与通信综合实验的同学较多, 时间也难以统一, 为方便大家实验, 明确要求, 特申明如下 : 1 请各位学习委员合理沟通与安排, 原则上每次实验不能超过 60 人 安排 好的同学请按时参加实验 2 同学到达实验地点后, 请在名单上签到, 不允许代签 每位同学签到时 必须标注自己所在的实验组别, 在提交实验报告时必须注明所在组别, 否则成绩无效 每位同学硬件实验必须参加,

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information