微机原理第4章 汇编语言语法和DOS功能调用

合集下载

微机原理与接口技术-第4-1章

微机原理与接口技术-第4-1章

例4-3 用键盘最多输入10个字符,并存 入内存变量Buff中,若按“Enter”键,则 表示输入结束。
用BIOS层功能调用实现 层功能调用实现 的源程序: 的源程序: .MODEL SMALL CR EQU 0DH .STACK 200H .DATA Buff DB 10 DUP(?) .CODE .STARTUP MOV CX, 0AH LEA BX, Buff
Windows层功能模块的调用
Win32 API使用堆栈来传递参数 API函数调用 C语言的消息框函数的声明: int MessageBox( HWND hWnd, // handle to owner window LPCTSTR lpText, // text in message box LPCTSTR lpCaption, // message box title UINT uType // message box style );//参数 最后还有一句说明: Library: Use User32.lib.//说明这个函数的位置
API 函数的返回值
有的API 函数有返回值,如MessageBox 定义 函数有返回值, 有的 的返回值是int类型的数,返回值的类型对汇编 的返回值是 类型的数, 类型的数 程序来说也只有dword 一种类型,它永远放在 一种类型, 程序来说也只有 eax 中。如果要返回的内容不是一个 如果要返回的内容不是一个eax所能 所能 容纳的, 容纳的,Win32 API 采用的方法一般是返回一 个指针, 个指针,或者在调用参数中提供一个缓冲区地 干脆把数据直接返回到缓冲区中去。 址,干脆把数据直接返回到缓冲区中去。
.REPEAT MOV AH, 0H INT 16H .BREAK .IF AL==CR MOV [BX],AL INC BX .UNTILCXZ .EXIT 0 END

微机原理与接口习题汇总

微机原理与接口习题汇总

第1章微型计算机基础一、单选题1.以下哪个数最大( D )。

A、10110101BB、234C、234QD、123H2.以下哪个数最大()。

A、10111101BB、240C、134QD、F3H3.以下哪个数最大()。

A、101101BB、198C、162QD、ABH4.以下哪个数最大()。

A、1101101BB、200C、373QD、1D7H5.下列各数种,最大的是( A )。

A、(321)16B、(327)8C、(659)10D、(11100111)26.字母A的ASCII代码是( B )。

A、39HB、41HC、0DHD、0AH7.字母a的ASCII代码是( B )。

A、60HB、61HC、40HD、41H8.回车符的ASCII代码是( C )。

A、39HB、41HC、0DHD、0AH9.换行符的ASCII代码是(D)。

A、39HB、41HC、0DHD、0AH10.数字9的ASCII代码是( A )。

A、39HB、41HC、0DHD、0AH11.数字0的ASCII代码是( B )。

A、30B、30HC、0D、0H12.在计算机系统中,微处理器通常不包含( C )。

A、算术逻辑单元B、程序计数器C、大容量内存D、寄存器13.下列各数不属于8421BCD码的是( A )。

A、10100101BB、01011001BC、00110011BD、01010100B14.以下关于字节和字长的说法错误的是( D )。

A、一个字节由8位二进制位组成B、字长是计算机内部一次可以处理的二进制的位数C、字长依赖于具体的机器,而字节不依赖于具体的机器D、字长越长,处理精度越高,但处理速度越慢15.假定字长为n位,以下关于数的定点和浮点表示的说法错误的是( D )。

A、定点表示法是指计算机中所有数的小数点的位置是人为约定不变。

B、浮点数比相同位数的定点数表示的数值范围大。

C、定点整数的表示范围为-(2n-1-1)~(2n-1-1)。

微机原理 DOS功能调用

微机原理 DOS功能调用
3)2号功能调用 检查键盘上各特殊功能键的状态。 例4.29 检查特殊功能键的状态。 MOV AH,2 ;功能号2 INT 16H 调用结果: AL=键盘状态字节KB_Flag,每1位对应一个特殊 功能键,如图:
2.打印机中断调用INT 17H
• 这类中断调用也有0、1、2等3种。调用前,AH 功能号,DX打印机号(0~2)。 1)0号功能 在打印机上打印1个字符,AH打印机状态。调用 前AL=待打印字符的ASCII码。 例4.30 在打印机上打印一个字符“$”。
TO_STOP:

;停止打印处理
4.2.1 概述 4.2.2 DOS系统功能调用 4.2.3 BIOS中断调用
4.2.3 BIOS中断调用
• 在 80X86 微 型 计 算 机 中 , 从 内 存 地 址 0FE000H 开始的 8KB 存储空间中,用 EPROM 固化了 ROM BIOS程序。(现代的PC机用的是EEPROM) • ROM BIOS 模块包含了系统加电自检程序、引导 装入程序、基本I/O设备驱动程序以及接口控制等 功能模块,它们以中断服务程序的形式向程序员 开放。
例4.22 编写显示星号“*”的程序。
MOV MOV INT DL,‘*’ ;DL 要显示字符的ASCII码 AH,02H ;AH 功能号02H 21H ;显示星号“*”
9号功能调用前, 要将字符串的首地址送到 DS:DX中,调用 后显示以DS:DX为首地址的字符串,直到遇到$符为止, $符不显示出来。 例4.23 显示信息“Try again.”, 并回车、换行。 DATA SEGMENT MESS DB ‘Try again.’,0DH,0AH,‘$’;待显示字符串 DATA ENDS ┇ MOV AX,SEG MESS MOV DS,AX ;DS 字符串起始段地址 MOV DX,OFFSET MESS ;DX 偏移地址 MOV AH,9 ;AH 功能号9 INT 21H ;显示该字符串 程序中,0DH、0AH是回车、换行键的ASCII码。

微机原理4-3

微机原理4-3

YES: … NO:
5
(2) 输入字符串(功能号 功能号=0AH) 功能号 此功能调用从键盘输入一串字符并把它存入用户 指定的缓冲区中。 MOV AH, 0AH LEA DX, <字符串缓冲区首地址 字符串缓冲区首地址> INT 21H
用户定义的输入字符串的缓冲区格式
N1 N2 (预留的 个字节的存储单元 预留的N1个字节的存储单元 预留的 个字节的存储单元) 0DH
16
4.4 汇编语言程序设计
一、程序设计概述 二、顺序程序 三、分枝程序 四、循环程序 五、子程序设计 六、常用程序设计举例
17
三、 分枝程序
IF…THEN结构
程序结构: … 测试/比较指令 (TEST/CMP) 条件转移指令 (Jx 标号) 处理体 标号: 其他指令 …
18
条件满足 ?
N
Y 处理 标号:
26
例1: 二进制数(0-F)转换成ASCII(‘0’-‘F’)的子程序。 BIN2ASC PROC ;要转换的数在AL的低四位 ;转换结果仍在AL中 CMP AL, 9 JA A2F ADD AL, 30H JMP DONE A2F: ADD AL, 37H DONE: RET BIN2ASC ENDP 调用方法:(在主程序中) … MOV AL, 0CH CALL BIN2ASC (AL中有0CH的ASCII码43H, ’C’)
25
五、 子程序设计
调用子程序用CALL指令,返回调用程序用RET 指令。 子程序允许嵌套调用。 进入子程序后首先要保护主程序的运行状态(标 志位)和使用的寄存器内容(称为保护现场 保护现场),退 保护现场 出子程序前要恢复现场 恢复现场。 恢复现场 调用前要预先确定子程序中要使用哪些寄存器 使用哪些寄存器, 使用哪些寄存器 并定义入口参数和出口参数 定义入口参数和出口参数。参数传递可利用 定义入口参数和出口参数 寄存器、存储单元或堆栈(要用BP寻址)。

汇编实验四--DOS功能调用

汇编实验四--DOS功能调用

福建农林大学金山学院实验报告系:专业:计算机科学与技术年级: 08 姓名:学号:实验课程:汇编语言实验室号:_______ 实验设备号:实验时间:指导教师签字:成绩:实验四 DOS功能调用1.实验目的和要求1.学会DOS中关于显示功能调用指令的用法。

2.领会修改显存方法显示字符。

2.实验环境实验的硬件环境是:IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录1、输入一个字符,显示出来2、输入一个字符串,显示出来3、buf开始的3个的16位二进制数用十六进制数的形式显示出来(1)理解程序(2)输入程序,汇编,运行(在DOS状态下输入:文件名.EXE),观察结果。

(3)如果要分行显示,程序要如何修改?DATA SEGMENTBUF DW 4F59H, 56A8H, 0FF90HDATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DA TASTART: MOV AX, DA TAMOV DS, AXMOV SI, 0P: MOV BX, BUF[SI]MOV CH, 4L: MOV CL, 4ROL BX, CLMOV DL, BLAND DL, 0FHCMP DL, 10JB NEXTADD DL, 7NEXT: ADD DL, 30HMOV AH, 2INT 21HDEC CHJNZ LINC SIINC SICMP SI, 4JNA PMOV AH, 4CHINT 21HCODE ENDSEND START4、运行下列程序,在屏幕的第1行,会显示一个字符X,理解程序段STACK SEGMENTDB 128 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART: MOV AX,STACKMOV SS,AXMOV SP,128MOV AX,0B800HMOV ES,AXMOV AH,0 ;BIOS 10H的0号功能,设置80X25的彩色字符模式 MOV AL,03HINT 10HMOV AH,'X'MOV ES:[160*1+40*2],AHMOV AL,0MOV AH,4CHINT 21HCODE ENDSEND START5、显示*************************6、编写程序,统计字缓冲区中的20个数据的正数、负数、0的个数,并将统计结果以16进制形式显示出来。

汇编语言---dos和bios功能调用

汇编语言---dos和bios功能调用

下面介绍一下其他功能: 下面介绍一下其他功能: (1)AH=25H:设置中断向量 ) : 入口参数: 中断号。 入口参数:AL=中断号。 中断号 DS:DX=中断向量。 中断向量。 : 中断向量 功能: 所指中断号的中断向量设置为DS: 。 功能:将AL所指中断号的中断向量设置为 :DX。 所指中断号的中断向量设置为 (2)AH=35H:获取中断向量 ) : 入口参数: 中断号。 入口参数:AL=中断号。 中断号 出口参数: : 中断向量。 出口参数:ES:BX=中断向量。 中断向量 功能: 的指中断号的中断向量由ES: 返回 返回。 功能:将AL的指中断号的中断向量由 :BX返回。 的指中断号的中断向量由 (3)AH=31H:程序终止并驻留内存 ) : 入口参数: 返回码。 入口参数:AL=返回码。 返回码 DX=驻留内存的节数(1字=16字节)。 驻留内存的节数( 字 字节)。 驻留内存的节数 字节 功能:终止程序执行,全由DX所确定的一部分代码工 功能:终止程序执行,全由 所确定的一部分代码工 数据仍留在内存中。 数据仍留在内存中。
• ③ 应用BIOS提供的功能程序来控制硬件。这是低层次 控制,要求编程者对硬件有相当深入的了解。当BIOS 与DOS提供的功能相同时,应首先选用DOS。BIOS固 化在ROM中,不依赖于DOS操作系统,使用BIOS软中 断调用子程序可直接控制系统硬件。BIOS调用速度快, 适用于高速运行的场合。中断调用可用软件中断指令 “INT n”来实现,n为中断类型码。使用BIOS调用的汇 编语言和C语言的程序可移植性比较差。 • • ④ 直接使用汇编语言编程进行控制。要求编程者对I/O 设备的地址、功能比较熟悉。
习 题 1.假设 假设VAR1和VAR2为字变量,LAB为标号,试指出下 为字变量, 为标号, 假设 和 为字变量 为标号 列指令的错误之处: 列指令的错误之处: (1)ADD VAR1,VAR2 ) , (2)SUB AL,VAR1 ) , (3)JMP LAB[SI] ) (4)JNZ VAR1 ) (5数据 画图说明下列语句所分配的存储空间及初始化的数据 值。 ,-12H,3 DUP (1)BYTE_VAR DB ‘BYTE’,12,- ) , ,- , ,?,2 (0,?, DUP(1,2),?) ,?, ( , ),?) ,?,-5, (2)WORD_VAR DW 5 DUP(0,1,2),?,- , ) , , ,?,- ‘BY’,‘TE’,256H , ,

微机原理与接口技术(楼顺天第二版)第四章习题解答

微机原理与接口技术(楼顺天第二版)第四章习题解答

微机原理与接口技术(楼顺天第二版)习题解答第4章汇编语言程序设计4。

1、已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。

答:BUF D B ”BONJOUR_BELLE"BUFR DB 100 DUP(?)MOV CX, NLEA SI, BUFLEA DI, BUFRADD DI,CXDEC DIL1:MOV AL,[SI]MOV [DI],ALINC SIDEC DILOOP L14。

2、利用移位、传送和相加指令实现AX的内容扩大10倍.答:将扩大后的结果放在DX:AX中,注意到10×AX=8×AX+2×AX。

XOR DX,DXSHL AX,1RCL DX,1MOV BX,AXMOV CX,DXSHL AX,1RCL DX, 1SHL AX, 1RCL DX, 1ADD AX, BXADC DX, CX4。

3、在缓冲区V AR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果V AR中保存的为有符号数,则再编写程序实现将其按递减关系排列。

答:V AR DW 1236,-432,3900XOR SI,,SIMOV AX,V AR[SI]CMP AX,V AR[SI+2]JAE L1XCHG AX,V AR[SI+2]L1:CMP AX, V AR[SI+4]JAE L2XCHG AX, V AR[SI+4]L2:MOV V AR[SI],AXMOV AX,V AR[SI+2]CMP AX,V AR[SI+4]JAE L3XCHG AX,V AR[SI+4]L3:MOV V AR[SI+2], AX4。

4、编写程序段实现将AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,则得到的(DX)=10110110 10011001B。

微机原理及接口第四章习题答案

微机原理及接口第四章习题答案

“微机系统原理与接口技术”第四章习题解答1.判断以下说法是否正确,如有错,请说明原因并改正。

(1)伪指令在汇编过程中不会产生二进制代码。

(2)宏和过程的相同之处是都可用于简化源程序书写、精简目标代码。

(3)在计算机中,高级语言通常需要转换为汇编语言后才能执行。

(4)汇编语言程序上机一般包括编辑、汇编、链接和调试几个步骤。

答:(1)正确。

(2)错误。

宏不能精简目标代码。

(3)错误。

高级语言程序经编译或解释后直接转换为目标代码。

(4)正确。

2.已知数据和符号定义A1 DB ?A2 DB 8K1 EQU 100判断下列指令的正误,并说明错误指令的原因。

(1)MOV K1,AX(2)MOV A2,AH(3)MOV BX,K1MOV [BX],DX(4)CMP A1,A2(5)K1 EQU 200答:(1)错误。

K1是符号常数,在此处相当于立即数100,故不能做目的操作数。

(2)正确。

(3)正确。

(4)错误。

A1、A2都是字节变量,相当于两个存储器单元,故不能同时出现在一条指令中直接进行比较。

(5)错误。

用EQU定义的符号不能重新赋值,除非已用PURGE解除了原值。

3.若数据段中有定义NUM1 EQU 23HNUM2 DW 0则指令MOV NUM2,NUM1 的源、目操作数的寻址方式以及指令执行后NUM2+1单元的内容分别是什么?答:指令MOV NUM2,NUM1的源操作数使用立即数寻址,目的操作数使用直接寻址。

指令执行后NUM2+1单元的内容是0。

4.设DS=6000H,BX=8432H,SS=5000H,SP=3258H,内存69632H~69635H单元的内容依次是00H、11H、22H、33H。

4字节指令CALL DWORD PTR [BX+1200H] 本身位于2000H:3250H处的双字单元中。

当8086执行该指令后转移至子程序入口时,CS、IP、SS、SP各寄存器以及栈顶2个字单元的内容分别是多少?答:执行结果为CS=3322H,IP=1100H,SS=5000H,SP=3254H,栈顶的两个字即断点地址,为2000H:3254H。

汇编语言语法和DOS功能调用

汇编语言语法和DOS功能调用

可编辑ppt
7
示例程序(续)
ROTATE :
DISPLAY:
MOV CL, 4 ;CL中放移位位数
MOV DL, AL ;显示16进制数
ROL BX,CL
MOV AH,2
MOV AL,BL
INT 21H
AND AL,0FH ;AL中为一位16进制数 DEC CH
ADD AL,30H ;转换为ASCII码值
1
三种语言的比较
可编辑ppt
2
为什么还要学习和使用汇编语言呢?
主要有三点原因: 1) 程序设计人员能更充分地利用机器硬件的全部功能,发
挥机器长处。 2) 底层的一些功能仍然靠汇编语言程序来实现。 3) 汇编语言程序比高级语言程序的目标代码短且运行速度
快。在要求节省内存空间和提高程序运行速度的重要场 合(如实时控制等)常用汇编语言来编制。
注释字段:是一个任选字段,用于说明程序片段或指令的功能,汇编过程中 不处理这样的字段,它只是用于提高源程序的可读性.注释必须使用分号作 为开始。
例子:教材P138 例4-1
可编辑ppt
12
伪指令语句格式
•伪指令语句:这种语句用于指示汇编程序(翻译程序)如何 汇编源程序.和指令语句不同,汇编程序处理它时不会产生 机器指令代码,只对伪指令提出的要求进行解释并立即完成 要求的操作.
DATA ENDS
CODE SEGMENT
;代码段
ASSUME CS:CODE,DS:DATA
BEGIN: MOV AX, DATA
MOV DS,AX
MOV DX,OFFSET NOTES ;显示提示信息
MOV AH,9H
INT 21H
MOV BX,NUM

微原-第四章(9)

微原-第四章(9)
下面可以根据不同值作不同功能的处理。 下面可以根据不同值作不同功能的处理。

DOS系统功能调用 §4.3.7 DOS系统功能调用 (4)(AH)=02H时,为字符输出。 AH) 02H 为字符输出。 将寄存器DL中的字符输出到标准输出 将寄存器DL中的字符输出到标准输出 DL 设备上。如果检测到CTRL BREAK就执行 设备上。如果检测到CTRL BREAK就执行 23H指令。 INT 23H指令。
DOS系统功能调用 §4.3.7 DOS系统功能调用 AH) 08H (3)(AH)=08H时,读键盘但不 显示。 此功能与功能7 基本相同, 显示 。 此功能与功能 7 基本相同 , 不同 的是它检查CTAL BREAK, 的是它检查CTAL BREAK,从而可以由此 组合键停止输入。 组合键 DOS系统功能调用

输入/ 输入/输出设备管理的调用方式及其功能
AH) 01H 为键盘输入。 ( 1)( AH) =01H时,为键盘输入。等待用
户并从标准设备(如键盘)读入一个字符, 户并从标准设备(如键盘)读入一个字符,将其送 到寄存器AL中和标准输出设备上 同时, 到寄存器AL中和标准输出设备上,同时,检查该字 AL中和标准输出设备上, 符是否为CTRL BREAK, 若是, 则执行一条INT 23H 符是否为 CTRL BREAK , 若是 , 则执行一条 INT 23H 指令,即中止正在执行的程序,返回DOS系统。 指令,即中止正在执行的程序,返回DOS系统。 DOS系统
DOS系统功能调用 §4.3.7 DOS系统功能调用
在 IBM PC系统中 , 除了DOS 系统中有一组 PC 系统中, 除了 DOS系统中有一组 系统中 DOS 输入/ 输出子程序可供用户调用外, 在系统 输入 / 输出子程序可供用户调用外 , ROM中也有一组输入 中也有一组输入/ 的ROM中也有一组输入/输出管理程序可供用 户 使 用 , 这 组 程 序 常 称 为 ROM BIOS(ROM System)。 Basic I/O System)。

DOS功能调用及汇编语言程序结构

DOS功能调用及汇编语言程序结构

DOS功能调用及汇编语言程序结构第九次课4.3DOS功能调用1、DOS功能在PC机的操作系统(DOS)的开发过程中,为了简化程序,开发了一些常用的子程序,而这些子程序,在用户操作系统的安装过程中,将将这些常用的子程序安装到了内存单元中,用户可以在编写自己的用户程序时,进行调用。

其中有两种:BIOS子程序:功能管理与计算机相连接的外部设备(显示器、键盘、磁盘驱动)程序,称为基本输入输出系统(basic Input/output system)这部分程序是存放在ROM 区所以通常称为:ROM BIOS DOS功能程序:与BIOS程序一样,DOS功能程序也是计算机操作系统开发人员编写的一些常用的用于磁盘文件管理的子程序,主要用于磁盘文件的建立、打开、读写、关闭,用户同样可以在自己的程序中对他们进行调用,简化用户程序的开发。

与BIOS不同的是DOS功能程序是存放在硬盘上的,在系统上电时,由操作系统,将其安装到内存中的,称为常驻内存程序。

用户调用这两种程序一般采用中断指令进行调用:DOS功能的调用方法:1、在AH中写入功能调用号2、在指定的寄存器中设置入口参数3、用INT 21 指令执行调用4、根据出口参数分析调用执行情况了一个大程序存放在内存单元中,从nn1:nn2 开始的单元中,在操作系统上电进行系统初始化时,将nn1:nn2 存放到了中断向量表中,0000H:0084H开始的连续4个单元中,当用户在用户程序中用INT 21H 调用DOS的某一个功能时,即控制程序转移到nn1:nn2 开始的程序,在这段程序中首先根据AH中的功能,可以分析出用户调用的哪一个功能从而在转到相应地方执行相应的程序段。

以下以几个DOS功能的应用介绍DOS功能使用方法:2、常用功能调用1)键盘输入单字符并显示调用号:01,无入口参数。

功能:等待键入,检查是否是Ctr - Break键,是,退出。

不是将键入的字符送AL 寄存器并显示。

第4章-8086汇编语言程序设计(1)汇编语言的语句-伪指令-运算符-DOS功能调用

第4章-8086汇编语言程序设计(1)汇编语言的语句-伪指令-运算符-DOS功能调用
段名则是由SEGMENT及ENDS定义的段名。
注意:ASSUME只是告知汇编程序有关段寄存器与段的关系, 并没有给段寄存器赋予实际的初值。
ORG规定了段内的起始地址或偏移地址。 格式: ORG <表达式> 表达式的值即为段内的起始地址或偏移地址,从此地址起连续 存放程序或数据。
四、过程定义语句 格式:过程名 PROC [NEAR]或FAR ┇ RET ┇ 过程名 ENDP
例1: MOV AX,SEG STRI1 MOV DS,AX 将变量STRI1所在段值取到DS中
例2: MOV SI,OFFSET STRI1 代表将变量STRI1处的地址偏移量取到SI中.
注意:它与 LEA SI,STRI1类似。 TYPE,SIZE、LENGTH (不作要求).
#3
5. 类型操作符PTR
新存储器地址。
2. 逻辑运算符(不作要求) AND、OR、XOR、NOT,只能用于数字表达式中。
3. 关系运算符(不作要求) EQ(相等)、NE(不等)、LT(小于)、GT(大于)、 LE(小于或等于)、GE(大于或等于)
4. 分析操作符 SEG,OFFSET,TYPE,SIZE、LENGTH。可以把存储器 一些特征作为数值送回。
IMUL AL SUB AX,BX MOV D,AX MOV AH,4CH
INT 21H
CODE ENDS
END START
➢ 一个源程序通常由若干个段组成,每个段均以SEGMENT开 始,以ENDS结束。
➢ 每个段包含若干语句,分指令语句与伪指令语句两种。
➢ 每条语句可由标识符、保留字、表达式等元素组成。
DATA ENDS
STACK SEGMENT DB 20H DUP(?)

第四章 汇编语言语法和DOS调用

第四章 汇编语言语法和DOS调用
第四章 汇编语言语法和DOS功能调用
本章要点
汇编语言格式 伪指令 宏指令
4.1 汇编语言程序基本格式 4.2 汇编语言基本语法 4.3 伪指令 4.4 宏指令 4.5 DOS系统功能调用
系统功能调用
4.1汇编语言程序的格式
一、 汇编语言概述 机器语言是计算机能直接识别和执行的语言,用一串“0”、“1”数字代码表示。 汇编语言是一种符号语言,它用某种容易记忆的英文缩写去表示机器指令操作码(指 令助记符),用人们熟悉的数码及数学符号等表示操作数、地址。 二、 汇编语言源程序和汇编程序 用汇编语言编写的程序称为汇编语言源程序,或简称为源程序。对程序员来讲, 符号语言简单直观、便于记忆,比二进制数表示的机器语言方便了许多。但计算机只 “认识”机器语言而不认识这些文字、数字、符号,为此人们创造了一种程序,叫汇 编程序。如同英汉之间对话需要“翻译”一样,汇编程序的作用相当于一个“翻译员 ”,自动地把汇编语言源程序翻译成机器语言。该过程称为汇编,完成汇编任务的程 序称为汇编程序,相应形成的机器语言程序称为目标程序。汇编后形成的目标程序虽 然是二进制代码,但还不能直接上机运行,必须经过连接程序(LINK)连接,将库文 件或其它目标文件连接到一起形成可执行文件后,才能送入计算机执行。汇编语言程 序从建立到汇编、连接形成可执行程序的整个过程如图所示。
- 7-
目录
上页
下页
结束
4.2.2运算符与表达式
1. 算术运算符 算术运算符有:+(加)、-(减)、*(乘)、/(除)、MOD(取余除)。 MOV AL,4*8+5 ;数值表达式 MOV SI,OFFSET BUF+12 ;地址表达式 2. 逻辑运算符 逻辑运算符有:AND(与)、OR(或)、XOR(异或)、NOT(非)。 逻辑运算符只能用于数值表达式中,不能用于地址表达式中。逻辑运算符和 逻辑运算指令是有区别的。逻辑运算符的功能在汇编阶段完成,逻辑运算指令的 功能在程序执行阶段完成。 在汇编阶段,指令AND AL,78H AND 0FH等价于指令AND AL,08H。 3. 关系运算符 关系运算符有:EQ(相等)、LT(小于)、LE(小于等于)、GT(大于)、GE (大于等于)NE(不等于)。 关系运算符要有两个运算对象。两个运算对象要么都是数值、要么都是同一 个段内的地址。运算结果为真时,表示为0FFFFH,运算结果为假时,表示为 0000H。 指令 MOV BX,32 EQ 45 等价于 MOV BX,0 指令 MOV BX,56 GT 30 等价于 MOV BX,0FFFFH

微机原理与接口技术:DOS系统功能调用

微机原理与接口技术:DOS系统功能调用

4. 显示字符串
9号功能:将字符串显示在屏幕上。 入口参数:DS:DX ,字符串必须以‘$’结尾。
【例4-5】在屏幕上显示字符串。
MOV MOV INT
DX, OFFSET STRING AH, 09H 21H
;设置入口参数 ;功能号送AH
10
DATA SEGMENT ‘DATA’
STRING DB 'WELCOME TO JILIN UNIVERSITY', '$'
计算机系统中还有一种调用称为BIOS功能调用,也叫低级调用,可以用于控制键盘、驱动磁 盘、控制显示器输出、驱动打印机和管理时钟。
多数操作系统是以中断方式实现系统功能调用。
2
DOS操作系统中21H号中断被称为DOS系统功能调用,它的内部提供了几十个功能子程序,可以 实现字符输入、字符显示和打印、磁盘读写、文件建立打开关闭、文件读写等功能,基本上满足了 普通程序员对计算机系统资源的使用需求。为了调用方便,系统对这些功能子程序进行编号,称为 功能号。调用的步骤如下: ① 把要调用的功能号送AH寄存器 ② 根据调用要求设置入口参数 ③ INT 21H
7
【例4-4】 从键盘上输入字符串‘WELCOME’
DATA SEGMENT ‘DATA’
BUFF DB 10,0,10 DUP(?) ;定义数据区
DATA ENDS
CODE SEGMENT ‘CODE’
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
MOV DX, OFFSET BUFF
MOV AH ,0AH ;功能号送AH
INT 21H
;功能调用

汇编语言-DOS功能调用

汇编语言-DOS功能调用

福建农林大学计算机与信息学院(程序设计类课程)实验报告课程名称:汇编语言姓名:系:计算机系专业:计算机专业年级:09级学号:指导教师:职称:2011年12 月30 日实验项目列表福建农林大学计算机与信息学院实验报告系:计算机专业:计算机科学与技术年级: 2009 姓名:学号:实验室号田507 计算机号 79实验时间:11.11.22 指导教师签字:成绩:实验四 DOS功能调用一、实验目的(1)学会DOS中关于显示功能调用指令的用法;(2)领会修改显存方法显示字符。

二、实验内容1)输入一个字符,显示出来。

2)输入一个字符串,显示出来。

3)BUF开始的3个16位二进制数用十六进制数的形式显示出来。

(1)理解程序(2)输入程序,汇编,运行(在DOS状态下输入:文件名.EXE),观察结果。

(3)如果要分行显示,程序要如何修改?DATA SEGMENTBUF DW 4F59H, 56A8H, 0FF90HDATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DA TASTART: MOV AX, DA TAMOV DS, AXMOV SI, 0P: MOV BX, BUF[SI]MOV CH, 4L: MOV CL, 4ROL BX, CLMOV DL, BLAND DL, 0FHCMP DL, 10JB NEXTADD DL, 7NEXT: ADD DL, 30HMOV AH, 2INT 21HDEC CHJNZ LINC SIINC SICMP SI, 4JNA PMOV AH, 4CHINT 21HCODE ENDSEND START4)直接改变显存内容显示。

(1)显存空间分配:内存地址空间中,B8000H-BFFFFH共32KB的空间,为80×25彩色字符模式显示缓冲区。

向这个地址空间写入数据,写入的内容将立即出现在显示器上。

80×25=2000个字符,每个字符在缓冲区中占2个字节,一个字节存放ASCII码,一个字节存放字符属性(字符颜色、字符背景颜色、闪烁、高亮度)(2)偏移地址计算:如第2行,第40列:(2-1)×160+40×2 这个偏移地址中存放字符的ASCII码,(2-1)×160+40×2+1这个偏移地址中存放字符的属性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(2)等号伪指令语句“=” 指令格式: 标识符=操作数 功能:与EQU具有相同的功能,但允许重新定义。 例4.6 DATA =100 DATA1 = DATA +10 SOURCE=BX+SI MOV AX,[SOURCE] SOURCE=BX MOV CX,[SOURCE] (3)解除伪指令语句PURGE 指令格式: PURGE 标识符1,标识符2,…标识符n 功能:将EQU定义过的标识符解除定义,以便可以再次用EQU定 义。
6、 方式定义伪指令语句 格式: .8086 .386 7、 结构定义伪指令语句 有三条语句:结构定义伪指令,结构存储分配和预置伪指令及 结构使用伪指令。 (1)结构定义伪指令语句 格式:结构名 STRUC 数据变量序列 结构名 ENDS
(2) 结构存储分配和预置伪指令语句 格式:结构变量名 结构名 <元素值,元素值…> 结构变量名 结构名 N DUP(<元素值,元素值…>) 例4.11 对例4.10中的TAB结构进行存储空间分配和预置,形成4 个结构变量。 DATA1 TAB <> DATA2 TAB <’1234’> DATA3 TAB <,34H,SEG PLT> DATA4 TAB 5 DUP(<‘WXYZ’,22H>)
计算机程序设计语言一般可分为三种:机器语言、汇编语言和 高级语言。 机器语言:也称机器码,是CPU唯一能够识别的语言,用不同 数值的二进制数来表示要求CPU执行的命令,不同的CPU语言也不同, 难以记忆和阅读。 汇编语言:为了解决机器语言难以记忆和阅读的问题,用英文 缩写来表示各种指令而生成的一种语言,它与机器语言基本是一一 对应的。因此,汇编语言具有很高的执行效率。但也正因为这样, 汇编语言也仍然与CPU相关联,不同的CPU要使用不同的汇编语言。 在执行前要将其转换成CPU能够识别的机器码,这种转换称为汇编, 由于汇编语言与机器语言基本是一一对应的,所以这种转换是唯一 的。 高级语言:独立于CPU之外,语句直观简练,编程效率高。在 执行前要将其转换成CPU能够识别的机器码,这种转换称为编译。 不同的编译软件,编译后获得的机器码是不同的,好的编译软件, 得到的机器码占用内存小、执行效率高,但是与汇编语言相比都有 较大的差距。
3、段定义伪指令语句 (1)段结构定义伪指令语句 SEGMENT…ENDS 指令格式: 段名 段名 SEGMENT ENDS 定位类型 组合类型 ‘分类名’ 逻辑段内容 功能:定义一个逻辑段。 (1)段名:不可缺少,是逻辑段的地址,放在SEGMENT和ENDS 的前面。 (2)助记符:不可缺少,即SEGMENT和ENDS,分别表示段的开 始和结束。 (3)参数:可选,有定位类型、组合类型和分类名三个参数。
2、标识符赋值与解除伪指令语句 共有4条: 等值伪指令语句EQU 等号伪指令语句“=” 解除伪指令语句PURGE 别名定义伪指令语句LABEL (1)等值伪指令EQU语句 指令格式: 标识符 EQU 操作数 功能:为操作数定义一个标识符,以后就可以以标识符替代该 操作数。一经定义后就不能重新定义。 例4.5 DATA DATA1 CI EQU符 助记符 操作数1,操作数2,……操作数n n DUP(操作数1,操作数2,……操作数n) ;注释 ;注释
功能:将操作数存入以变量名所指定的存储单元为首地址的存 储区中,或者分配存储单元。 n DUP( )表示将括号内的操作数重复n次,n必须为正数。
例4-2 DATA1 DATA2 DATA3 DATA4
3、变量 变量—存放在存储器单元中的操作数,它的值是可以改变的, 在程序中出现的是存储器单元地址的符号,即与某一数据项第一字 节相对应的标识符。 变量的3个属性: ①段地址(SEG):变量所在段的段地址。 ②偏移地址(OFFSET):变量所在段内的偏移地址。 ③类型(TYPE):所定义的每个变量所占据的字节数。 4、标号 标号—可执行指令语句地址的符号表示,即用标识符来表示地 址。 标号的3个属性: ①段地址(SEG) :与标号对应的指令首字节所在的段地址。 ②偏移地址(OFFSET) :与标号对应的指令首字节所在的偏移 地址。 ③类型(TYPE) :标号的类型属性有两种:NEAR和FAR类型。
4.2 汇编语言中的基本数据 1、标识符 标识符—由程序员自由建立起来的,有特定意义的字符序列。 标识符的组成规则如下: ①必须由字母、数字(0,…,9)及特殊符号(?,· ,@, -,$)组成,且必须以字母打头。 ②字符总数限制在31个以内。 ③不能使用属于系统专用保留字(保留的字)。 2、常数 常数—语句中出现的那些固定值,除了自身的值以外,没有其 它任何属性。 常数分为两类 (1)数值常数 (2)字符串常数
(3)程序结束伪指令语句 格式: END 标号名 功能:在程序中不可缺省,标记汇编语言的源程序的结束。汇 编程序在汇编时遇到END就停止汇编。程序执行时从END后的标号名 处开始。 例4.9 程序结束伪指令语句的应用 CODE SEGMENT START:MOV AX,BX MOV CX,12H ┋ CODE ENDS END START
① 定位类型,表示本段起始地址,共有以下4种: ● PARA:缺省值,段的起始地址在节(16字节)的边界上。 ● BYTE:段的起始地址在任意字节边界上。 ● WORD:段的起始地址在任意字边界上。 ● PAGE:段的起始地址在页(256字节)边界上。 ② 组合类型,表示同类别名的段的连接方式,共有以下6种: ● NONE:缺省值,不与其他段连接。 ● PUBLIC:与其他段连接时按LINK中的顺序,由低地址到高 地址。 ● COMMON:与其他段以覆盖方式连接,段长度为最大段的长 度。 ● AT 表达式:该段起始地址在表达式所指定的节的边界上。 ● STACK:指定该段为堆栈段,在堆栈段中必须有该参数,多 个模块只用设一个堆栈段,使用顺序连接方式组合。 ● MEMORY:多个逻辑段连接时,本逻辑段定位在地址最高的 存储区。有多个MEMORY段时,除第一个MEMORY段外,其他段按照 COMMON方式处理。
4.1 汇编语言程序的格式 例4.1 试求小于100的所有非零偶数,并把结果存入以BUFF开始 的内存区.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 MY_DATA SEGMENT BUFF DB 50 DUP(?) MY_DATA ENDS MY_CODE SEGMENT ASSUME CS:MY_CODE, DS:MY_DATA START: MOV AX, MY_DATA MOV DS, AX MOV AL,2 LEA BX,BUFF LLP: MOV [BX],AL INC AL INC AL CMP AL,100 JNZ LLP INC 20H MY_CODE ENDS END STRAT
③ ‘类别名’,用来为该段取一个类别名,以便可以将同类 别名的段进行组合。可选,不超过40个字符。
(2)段分配伪指令语句 指令格式: ASSUME CS:段名,DS:段名,SS:段名,ES:段名 功能:定义当前有效的4个逻辑段,指明段和段寄存器的关系 注意点: 1)助记符ASSUME不可省略,一般放在代码段的开始处。 2) ASSUME后面的指令参数,由段寄存器名(CS、DS、ES、 SS)、冒号及段名组成,各参数之间用逗号隔开,段名应是 SEGMENT…ENDS中定义过的名字。 3)4个逻辑段不一定要全部定义,不使用的可以不定义。通常 代码段和数据段是必须的,若使用了串指令,还应定义附加段ES。 4)可以用ASSUME 段寄存器名:NOTHING取消定义。 5) ASSUME只将某个段分配给相应的段寄存器,只有代码段的 段基址自动装入CS,其他段还须用指令装入相应的段基址。
重点内容 1 汇编语言中的基本数据(标识符、常数、变量、标号)。 2 汇编语言中的常用伪指令。 3 汇编语言中的表达式(算术运算符、逻辑运算符、关系运算 符、分析运算符、修改属性运算符、其他运算符)。 4 DOS系统功能调用。 难点内容 1 汇编语言中的常用伪指令。 2 DOS系统功能调用。 学时数 4学时
5、 程序开始与结束伪指令语句 共有4条伪指令语句:NAME、TITLE、ORG和END。 (1)目标模块命名伪指令语句 格式: NAME 程序名 在输出列表文件时,每页开头打印这个程序名,若未用此指令 则打印文件名。 TITLE 文本名 ; 将文本名赋给目标模块作名字。
(2)定位伪指令语句 格式:ORG 表达式 功能:给出下一条语句的段内偏移量。 例4.8 用ORG指定数据段和代码段地址。 DATA SEGMENT X1 DW 20H,60H, ORG 100H X2 DB 10H,20H,30H ORG 200H X3 DW 1234H, 4321H DATA ENDS CODE SEGMENT ORG 100H ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ┋ CODE ENDS
(4)别名定义伪指令语句 格式:别名 LABEL 类型属性 LABEL:伪指令助记符,不可缺省。 功能:为一个已经定义过的标识符另取一个名称,以获得一个 新的类型属性。 例4.7 定义变量的别名 DATAB DATAW DISF DISN LABEL DW LABEL MOV BYTE 1234H,5678H FAR AX,[SI]
操作数是常数、表达式、字 DB DW DD 10H,25H 9988H,56H 2*40H,0AABBH
符串数据的定义
DB ‘HELLO’
例4-3 操作数用“?”定义不确定值 的变量,用DUP来定义重复变量,不确定值 的变量一般用作保留存储空间,以便存放 运算结果。 DATA1 DB ? DATA2 DW 0D55H, ? DATA3 DB 5 DUP(0) DATA4 DW 10 DUP(?) DATA5 DB 4 DUP(1,2 DUP (20))
4、过程定义伪指令语句 指令格式: 过程名 PROC 属性 过程内容 RET 过程名 ENDP 功能:定义一个由主程序可以用CALL指令调用的过程。 说明: 1)过程名是过程的名字,也是子程序的入口地址,不可缺少。 如同标号一样,也有三种属性: 段地址:过程的段基址。 偏移地址:过程的第一个字节与段首址之间相距的字节数。 距离类型:NEAR和FAR类型。NEAR允许在段内调用,FAR允许在 段间调用,若缺省则为NEAR。
相关文档
最新文档