《汇编语言功能号》
《汇编语言功能号》
失败:AX=错误码
4CH
程序终止
AL=返回码
4DH
取返回码
AL=返回码
4EH
查找第一个目录项
DS:DX=ASCII串地址,CX=属性
AX=错误码
4FH
查找下一个目录项
DS:DX=ASCII串地址
AX=错误码
54H
读取磁盘写标志
AL=当前标志值
56H
文件改名
DS:DX=旧ASCII串,
19H
取当前磁盘
AL=当前驱动器号
1AH
设置DTA地址
DS:DX=ቤተ መጻሕፍቲ ባይዱTA地址
1BH
取缺省驱动器FAT信息
AL=每簇的扇区数,
DS:BX=FAT标识字节
CX=物理扇区的大小,
DX=驱动器和簇数
21H
随机读
DS:DX=FCB首地址
AL=00H读成功
AL=01H文件结束
AL=02H缓冲区溢出
AL=03H缓冲区不满
DS:DX=FCB首地址
AL=00H文件找到,AL=FFH未找到
13H
删除文件
DS:DX=FCB首地址
AL=00H删除成功,AL=FFH未找到
14H
顺序读
DS:DX=FCB首地址
AL=00H读成功
AL=01H文件结束,记录无数据
AL=02H DTA空间不够
AL=03H文件结束,记录不完整
15H
顺序写
48H
分配内存空间
BX=申请内存容量
成功:AX=分配内存首址
失败:BX=最大可用空间
49H
释放内存空间
ES=内存起始段地址
汇编语言
汇编语言汇编语言实质上是机器语言的符号表示,即用助记符(指令功能的英文缩写)代替了机器语言指令的二进制代码。
用汇编语言按着规定的语法规则编写的程序称为汇编语言源程序(*.asm)。
汇编语言源程序中的汇编指令与指令的机器码(目标代码)是一一对应的。
汇编语言2高级语言是面向过程的语言,它不依赖于特定的机器,独立于机器,高级语言编写的程序由一系列编程语句和相应的语法规则构成,编程方法更适合于人们的思维习惯,易于理解和阅读,程序本身具有可移植性,通用性强高级语言的缺点是编译程序和解释程序复杂,占用内存空间大,与汇编语言程序相比,经编译后产生的目标程序长,执行速度慢高级语言3汇编语言上机处理过程4汇编语言汇编语言的程序格式伪指令程序设计基本方法5汇编语言的程序格式汇编语言程序的结构汇编语言语句类型及格式汇编语言的数据与表达式6源程序的一般格式STACK SEGMENT┇STACK ENDSDATA SEGMENT┇DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:…┇CODE ENDSEND START7例题一个两字相加的程序。
DATA SEGMENT ;定义数据段DATA1 DW 1234H ;定义被加数DATA2 DW 5678H ;定义加数DATA ENDS ;数据段结束ESEG SEGMENT ;定义附加段SUM DW 2 DUP(?);定义存放结果区ESEG ENDS ;附加段结束CODE SEGMENT ;定义代码段;下面的语句说明程序中定义的各段分别用哪个段寄存器寻址ASSUME CS:CODE, DS:DATA,ES:ESEGSTART:MOV AX,DSEG ;START为程序开始执行的启动标号MOV DS,AX ;初始化DSMOV AX,ESEGMOV ES,AX ;初始化ESLEA SI,SUM ;存放结果的偏移地址送SIMOV AX,DATA1 ;取被加数ADD AX,DATA2 ;两数相加MOV ES:[SI],AX ;和送附加段的SUM单元中HLTCODE ENDS ;代码段结束END START ;源程序结束8源程序的结构特点汇编语言程序通常由若干段组成,段由伪指令SEGMENT与ENDS定义,各段顺序任意,段的数目按需要确定,原则上不受限制。
汇编语言指令功能总结
汇编语言指令功能总结汇编语言是一种低级语言,主要用于编写机器码指令的程序。
在计算机科学领域中,汇编语言是非常重要的,因为它可以直接操作计算机的硬件资源。
本文将对汇编语言中常用的指令功能进行总结。
1. 数据传输指令数据传输指令用于将数据从一个位置传送到另一个位置。
常用的数据传输指令包括MOV(将数据从一个位置复制到另一个位置)、XCHG(交换两个位置的数据)、PUSH(将数据压入堆栈)、POP (将数据从堆栈中弹出)等。
2. 算术运算指令算术运算指令用于执行各种算术运算,例如加法、减法、乘法和除法。
常用的算术运算指令包括ADD(将两个数相加)、SUB(将一个数减去另一个数)、MUL(将两个数相乘)、DIV(将一个数除以另一个数)等。
3. 逻辑运算指令逻辑运算指令用于执行各种逻辑运算,例如与、或、非和异或。
常用的逻辑运算指令包括AND(对两个数执行与运算)、OR(对两个数执行或运算)、NOT(对一个数执行非运算)、XOR(对两个数执行异或运算)等。
4. 控制转移指令控制转移指令用于实现程序的跳转和循环执行。
常用的控制转移指令包括JMP(无条件跳转到指定的地址)、JZ(如果前一个运算结果为零则跳转)、JC(如果前一个运算结果进位则跳转)等。
5. 位操作指令位操作指令用于对数据的位进行操作。
常用的位操作指令包括AND(将两个数的对应位执行与运算)、OR(将两个数的对应位执行或运算)、NOT(取反操作)等。
6. 字符串操作指令字符串操作指令用于对字符串进行操作。
常用的字符串操作指令包括MOVSB(将一个字节从源地址复制到目的地址)、LODSB(将一个字节从源地址加载到AL寄存器)、STOSB(将AL寄存器中的值存储到目的地址)等。
7. 输入输出指令输入输出指令用于与计算机的输入输出设备进行交互。
常用的输入输出指令包括IN(从指定的端口读取数据)、OUT(将数据发送到指定的端口)等。
总结:汇编语言中的指令功能丰富多样,可以实现各种复杂的操作。
8051汇编语言概述一 ) 指令分类 42个助记符,33种功能,共...
3-2-6 位寻址
位寻址的的操作数是RAM单元和特殊功能寄存器中可 用于位操作的位的地址。 例如: setb 40h ;将28h的最低位(第0位)臵1 mov c, 3fh ;将27h的最高位(第7位)送到CY mov 3fh , c ;将CY 送到27h的最高位(第7位) anl c, 3fh ;CY & (27h的第7位) -> CY
3-3-4 累加器交换指令
1) 字节交换指令XCH(3 条)
助记符格式
XCH A, Rn
机器码
11001rrrB
相应操作
A Rn
指令说明 机器周期
n=0~7 1 1
XCH A, direct 11000101B A (direct) direct
XCH A, ቤተ መጻሕፍቲ ባይዱRi
1100011iB data
相应操作
Rn ← A
指令说明
n=0~7, rrr=000~111
机器周期
1 1 1
10101rrr Rn←(direct) n=0~7, direct rrr=000~111 Rn←#data n=0~7, rrr=000~111
MOV Rn, #data 01111rrr data
注意:以上传送指令的结果均不影响程序状态字寄存器 PSW 的 P 和 Z 标志。
3-3-1 片内数据存储器传送指令MOV
片内数据存储器传送指令MOV 共17 条,指令基本格式: MOV <目的操作数>, <源操作数> 1)以累加器 A 为目的地址的传送指令(4 条)
助记符格式 MOV A, Rn MOV A, direct MOV A, @Ri MOV A, #data 机器码 11101rrrB 相应操作 A←Rn 指令说明 n=0~7, rrr=000~111 i=0,1 机器周期 1 1 1
汇编语言程序概述、功能与设计
汇编语言(Assembly Language)
指用指令助记符代替机器码的编程语言。汇编语 言程序结构简单,执行速度快,程序易优化,编译后 占用存储空间小,是单片机应用系统开发中最常用的 程序设计语言。汇编语言的缺点是可读性比较差,只 有熟悉单片机的指令系统,并具有一定的程序设计经 验,才能研制出功能复杂的应用程序。
(a) 单汇分编支语流言程程序; 概述(b、)功多能分支流程
和设计
例 3 x, y均为8位二进制数, 设 x存入R0, y存入R1, 求解:
1
x0
y
1
x0
0
x0
汇编语言程序概述、功能 和设计
程序如下: START: CJNE R0, #00H, SUL1; R0中的数与00比较不等转移
MOV R1, #00H; 相等, R1← 0 SJMP SUL2 SUL1: JC NEG ; 两数不等, 若(R0)<0, 转向NEG MOV R1, #01H ; (R0)>0, 则 R1←01H SJMP SUL2 NEG: MOV R1, #0FFH ; (R0)<0, 则 R1←0FFH SUL2: RET
汇编语言程序概述、功能 和设计
机器语言(Machine Language)
直接用机器码编写程序、能够为计算机直接执行 的机器级语言。机器码是一串由二进制代码“0”和“1”组 成的二进制数据,其执行速度快,但是可读性极差。 机器语言一般只在简单的开发装置中使用,程序的设 计、输入、修改和调试都很麻烦。
汇编语言程序概述、功能 和设计
例 4 比较两个无符号数的大小。 设外部 RAM 的存储单元 ST1和 ST2中存放两个不带符号的二进制
汇编语言的原理和作用
汇编语言的原理和作用
汇编语言是一种低级编程语言,它使用符号代表机器指令,允许程序员直接操作计算机硬件。
汇编语言的原理基于将人类可读的指令转换为机器码,这样计算机可以理解并执行这些指令。
汇编语言的作用非常重要,它可以用于编写系统软件、驱动程序和对性能要求非常高的应用程序,因为它允许程序员直接控制硬件,从而实现更高效的代码。
汇编语言的原理基于将人类可读的指令转换为机器码,这一过程称为汇编。
汇编语言使用助记符代表机器指令,例如,MOV表示将数据从一个位置移动到另一个位置,ADD表示将两个数相加,JMP 表示无条件跳转等。
这些助记符被汇编器转换为对应的机器指令,然后被计算机执行。
汇编语言的作用非常广泛。
首先,它可以用于编写系统软件,如操作系统内核,因为这些软件需要直接与硬件交互,而汇编语言可以提供对硬件的直接控制。
其次,汇编语言还常用于编写驱动程序,因为驱动程序需要与硬件设备进行低级交互。
此外,对于性能要求非常高的应用程序,如图形处理、游戏开发等,汇编语言也可以发挥重要作用,因为它可以直接控制硬件资源,实现更高效的代
码。
总之,汇编语言的原理是将人类可读的指令转换为机器码,其
作用包括编写系统软件、驱动程序和对性能要求非常高的应用程序。
通过汇编语言,程序员可以直接控制计算机硬件,实现更高效的代
码和更好的性能。
《汇编语言》各章习题答案
汇编语言各章习题答案习题一答案:1.1无符号数: 11010011=211=D3H,01110111=119=77H,10000011=131=83H,00101111=47=2FH,10101010=170=AAH带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H,00101111=+47=2FH,10101010= -86=AAH1.2 5E8AH,0BE6H,3DEH,4940H1.3 00011101+00110101=01010010=52H=8201001001+11101000=00110001=31H=4910111110+01010010=00010000=10H=1610011010+11110001=10001011=8BH= -1171.4 00101001+01010011=01111100+00000110=10000010=82H=8201110011-00100100=01001111-00000110=01001001=49H=4901100110+00011000=01111110+00000110=10000100=84H=840000000100110010+01110101=0000000110100111+00000110=0000001000000111=0207H=2071.5 000020A3H,FF94H,00003456H,007FH,FFFFEC00H1.6无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH 1.7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码(2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255(3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码(4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码1.8(1) 108=01101100B=6CH,补码01101100B,压缩BCD码0000000100001000,ASCII码313038H(2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H(3) –15=11110001B=F1H,补码11110001B,ASCII码2D3135H(4) 254=0000000011111110B=00FEH,补码0000000011111110B,压缩BCD码0000001001010100,ASCII码323534H1.9(1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0(2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0(3) -74+29=11010011B,CF=0,SF=1,ZF=0,OF=0(4) -92-37=01111111B,CF=1,SF=0,ZF=0,OF=11.10回车、换行、响铃、ESC键、空格键、@、P、p习题二答案:2.9最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节)2.10CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP2.11字节单元保存8位数,字单元保存16位数。
汇编语言指令汇总版
MOV指令为双操作数指令,两个操作数中必须有一个是.MOV DST , SRC // Byte / Word执行操作: dst = src1.目的数可以是通用寄存器, 和段寄存器(但不允许用CS段寄存器).2.立即数不能直接送段寄存器3.不允许在两个存储单元直接传送数据4.不允许在两个段寄存器间直接传送信息PUSH入栈指令及POP出栈指令: 操作是以“后进先出”的方式进行数据操作.PUSH SRC //Word入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器.入栈时高位字节先入栈,低位字节后入栈.POP DST //Word出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器.执行POP SS指令后,堆栈区在存储区的位置要改变.执行POP SP 指令后,栈顶的位置要改变.XCHG(eXCHanG)交换指令: 将两操作数值交换.XCHG OPR1, OPR2 //Byte/Word执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp1.必须有一个操作数是在寄存器中2.不能与段寄存器交换数据3.存储器与存储器之间不能交换数据.XLAT(TRANSLATE)换码指令: 把一种转换为另一种代码.XLAT (OPR 可选) //Byte执行操作: AL=(BX+AL)指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码.LEA(Load Effective Address) 有效地址传送寄存器指令LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中.执行操作: REG = EAsrc注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONEMOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中LDS(Load DS with pointer)送寄存器和DS指令LDS REG , SRC //常指定SI寄存器。
《汇编语言功能号大全》
DL=驱动器号
40H
写文件或设备
41H 42H
删除文件 移动关闭指针
DS:DX=数据缓冲区地址, BX=文件号, CX=写入字节数 DX:DX=ASCII 串
43H
44H
45H 46H 47H
BX=文件号, CX:DX=位移量 AL=移动方式 读取/设置文件属 DS:DX=ASCII 串, 性 AL=0/1 取/置属性, CX=文件属性 设备 I/O 控制 BX=文件号; AL=0 取状态,AL=1 置状 态, AL=2 读数据,AL=3 写数 据, AL=6 取输入状态,AL=7 取输出状态 复制文件号 BX=文件号 1 强制文件号 取当前路径名 BX=文件号 1,CX=文件号 2 DL=驱动器号,DS:SI= ASCII 串地址
成功:AX=文件号 2; 出错:AX=错误码 成功:AX=文件号 1; 出错:AX=错误码 DS:SI=ASCII 串; 失败:AX=错误码
48H 49H 4AH 4BH
分配内存空间 释放内存空间 调整分配的内存空 间 装入/执行程序
BX=申请内存容量 ES=内存起始段地址 ES=原内存起始地址 BX=再申请内存容量 DS:DX=ASCII 串, ES:BX=参数区首地址 AL=0/3 执行/装入不执行 AL=返回码
【
汇编语言各功能号汇总
入口参数 CS=程序段前缀的段地址 DL=输出显示的字符
】
出口参数 AL=输入字符 AL=接受字符
功能号 功能 00H 程序终止 01H 键盘输入 02H 显示输出 03H 串行通信输入 04H 串行通信输出 05H 打印机输出 06H 控制台输入输出 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 10H 11H 12H 13H 14H 无回显键盘输入 无回显键盘输入 显示字符串 输入字符串 检验键盘状态
汇编语言作用
汇编语言本词条介绍的是汇编语言(面向机器的程序设计语言),更多含义,请参阅“汇编语言(多义词)”。
汇编语言(Assembly Language)是面向机器的程序设计语言。
在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。
汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。
因此,有时候人们也把汇编语言称为组合语言。
目录1简介2优缺点2.1 优点2.2 缺点3应用4特点5经典教材5.1 x86处理器5.2 ARM及单片机6编译环境7x86处理器指令集7.1 数据传送指令7.2 整数和逻辑运算指令7.3 移位指令7.4 位操作指令7.5 条件设置指令7.6 控制转移指令7.7 串操作指令7.8 输入输出指令7.9 高级语言辅助指令7.10 控制和特权指令7.11 浮点和多媒体指令7.12 虚拟机扩展指令8发展前景1简介汇编语言是直接面向处理器(Processor)的程序设计语言。
处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。
每一种处理器都有自己可以识别的一整套指令,称为指令集。
处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态如图所示,在电路中,每条机器指令都表现为一组电信号,通过一排导线进入处[1]理器。
这些电信号有的呈高电平,有的呈低电平,哪些为高,哪些为低,取决于不同的机器指令。
如果把高电平记为“1”,低电平记为“0”,那么,不同的机器指令将表现为不同的二进制序列,由于它们的无规律性,这就使得机器指令难以理解、书写和记忆人类最容易接受自己每天都使用的自然语言。
汇编语言各种指令的解释与用法
汇编语⾔各种指令的解释与⽤法【数据传输指令】⼀、通⽤数据传送指令1、传送指令MOV (move)指令的汇编格式:MOV DST,SRC指令的基本功能:(DST)<-(SRC) 将原操作数(字节或字)传送到⽬的地址。
指令⽀持的寻址⽅式:⽬的操作数和源操作数不能同时⽤存储器寻址⽅式,这个限制适⽤于所有指令。
指令的执⾏对标志位的影响:不影响标志位。
指令的特殊要求:⽬的操作数DST和源操作数SRC不允许同时为段寄存器;⽬的操作数DST不能是CS,也不能⽤⽴即数⽅式。
2、进栈指令 PUSH (push onto the stack)出栈指令 POP (pop from the stack)指令的汇编格式:PUSH SRC ;POP DST指令的基本功能:PUSH指令在程序中常⽤来暂存某些数据,⽽POP指令⼜可将这些数据恢复。
PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC)POP DST (DST)<-((SP));(SP)<-(SP)指令⽀持的寻址⽅式:push 和 pop指令不能不能使⽤⽴即数寻址⽅式。
指令对标志位的影响:PUSH 和 POP指令都不影响标志位。
指令的特殊要求:PUSH 和 POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者-2; POP指令的DST不允许是CS寄存器;3、交换指令 XCHG (exchange)指令的汇编格式:XCHG OPR1,OPR2指令的基本功能:(OPR1) <->(OPR2)指令⽀持的寻址⽅式:⼀个操作数必须在寄存器中,另⼀个操作数可以在寄存器或存储器中。
指令对标志位的影戏:不影响标志位。
指令的特殊要求:不允许使⽤段寄存器。
⼆、累加器专⽤传送指令4、输⼊指令IN (input)输出指令OUT (output)指令的汇编格式:IN ac,port port<=0FFHIN ac,DX port>0FFHOUT port,ac port<=0FFHOUT DX,ac port>0FFH指令的基本功能:对8086及其后继机型的微处理机,所有I/O端⼝与CPU之间的通信都由输⼊输出指令IN和OUT来完成。
汇编语言指令汇总
汇编语言指令汇总汇编语言是一种低级编程语言,它直接操作计算机硬件,使用指令来完成特定的任务。
下面是一些常用的汇编语言指令汇总。
1.操作数传送指令:-MOV:将数据从一个位置复制到另一个位置。
-XCHG:交换两个位置中的数据。
2.算术指令:-ADD:将两个数相加并将和存储在指定位置。
-SUB:将两个数相减并将差存储在指定位置。
-MUL:将两个数相乘并将结果存储在指定位置。
-DIV:将两个数相除并将商存储在指定位置。
-INC:将一个数增加1-DEC:将一个数减少13.逻辑指令:-AND:对两个数进行逻辑与操作并将结果存储在指定位置。
-OR:对两个数进行逻辑或操作并将结果存储在指定位置。
-XOR:对两个数进行逻辑异或操作并将结果存储在指定位置。
-NOT:对一个数进行逻辑非操作并将结果存储在指定位置。
4.控制指令:-JMP:无条件跳转到指定位置。
-JZ:如果前一条指令的结果为0,则跳转到指定位置。
-JNZ:如果前一条指令的结果不为0,则跳转到指定位置。
-JC:如果前一条指令产生进位,则跳转到指定位置。
-JNC:如果前一条指令不产生进位,则跳转到指定位置。
5.栈操作指令:-PUSH:将数据放入栈中。
-POP:将栈顶的数据弹出。
6.输入输出指令:-IN:从外部设备中读取数据。
-OUT:将数据发送到外部设备。
7.循环指令:-LOOP:根据计数寄存器的值,重复执行指定的代码块。
8.过程调用指令:-CALL:调用一个子程序。
-RET:从子程序返回。
9.字符串指令:-MOVS:将一个字节或一个字从一个位置复制到另一个位置。
-CMPS:将两个位置中的字节或字进行比较。
除了以上提到的指令外,不同的汇编语言还有其它特定的指令,用于特定的硬件操作或功能实现。
这些指令的语法与使用方法可能略有不同,具体请参考所使用的汇编语言的文档或手册。
总之,汇编语言指令是汇编语言的基础,熟练掌握和理解这些指令对于编写高效和可靠的汇编程序至关重要。
微机原理-第7章 汇编语言与汇编程序5 常用DOS系统功能调用及BIOS功能调用-文档资料
常用DOS系统功能调用
① ② ③ ④ ⑤ ⑥
单字符输入 ( 01H、07H、08H功能 ) 显示单字符 ( 02H、05H功能 ) 单字符输入或显示( 06H功能 ) 字符串输入 ( 0AH功能 ) 显示字符串 ( 09H功能 ) 检测键盘状态 ( 0BH功能 )
① 单字符输入 (01H、07H、08H功能)
max DB 11 DB ? DB 11 DUP(?)
SEGMENT ASSUME CS:code, DS:data MOV AX , data ;置缓冲区地址于DS:DX
ROM BASIC ROM BIOS ( a)
FFFFH
ROM BASIC ROM BIOS (b)
FFFFH
图 7.5-1 PC-DOS (a) DOS启动后 (b) 执行程序装入后
软件中断分类
DOS中断
中断类型号
20H~3FH 为用户程序和系统程序提供磁盘读写、程 序退出、系统功能调用等功能。
③ 单字符输入或显示 (06H功能)
入口参数:DL = 0FFH,表示从键盘输入字符
或 DL ≠ 0FFH,表示DL中是要显示字符的ASCII 码
功能号:
类型号:
AH = 06H
21H
出口参数:若ZF=0时,表示有键按下,将字符的ASCII码
送入寄存器AL, AL=输入字符。 若标志ZF=1时,表示无键按下,寄存器AL中不 是键入字符ASCII码, AL=0 。
② 显示单字符 (02H、05H功能)
(a)2号系统功能调用
入口参数:DL = 要显示字符的ASCII 码 功能号: AH = 02H 类型号: 21H 出口参数:无 实现功能:显示指定字符,光标右移。
汇编语言的所有指令
汇编语言的所有指令数据传送指令集MOV功能: 把源操作数送给目的操作数语法: MOV 目的操作数,源操作数格式: MOV r1,r2MOV r,mMOV m,rMOV r,dataXCHG功能: 交换两个操作数的数据语法: XCHG格式: XCHG r1,r2 XCHG m,r XCHG r,mPUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPALEA,LDS,LES功能: 取地址至寄存器语法: LEA r,m LDS r,m LES r,mXLAT(XLATB)功能: 查表指令语法: XLAT XLAT m算数运算指令ADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,Z,S,OSUB,SBB功能:减法指令语法: SUB OP1,OP2 SBB OP1,OP2格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data影响标志: C,P,A,Z,S,OINC,DEC功能: 把OP的值加一或减一语法: INC OP DEC OP格式: INC r/m DEC r/m影响标志: P,A,Z,S,ONEG功能: 将OP的符号反相(取二进制补码)语法: NEG OP格式: NEG r/m影响标志: C,P,A,Z,S,OMUL,IMUL功能: 乘法指令语法: MUL OP IMUL OP格式: MUL r/m IMUL r/m影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)DIV,IDIV功能:除法指令语法: DIV OP IDIV OP格式: DIV r/m IDIV r/mCBW,CWD功能: 有符号数扩展指令语法: CBW CWDAAA,AAS,AAM,AAD功能: 非压BCD码运算调整指令语法: AAA AAS AAM AAD影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)DAA,DAS功能: 压缩BCD码调整指令语法: DAA DAS影响标志: C,P,A,Z,S位运算指令集AND,OR,XOR,NOT,TEST功能: 执行BIT与BIT之间的逻辑运算语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL功能: 移位指令语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL影响标志: C,P,Z,S,OROR,ROL,RCR,RCL功能: 循环移位指令语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL 影响标志: C,P,Z,S,O程序流程控制指令集CLC,STC,CMC功能: 设定进位标志语法: CLC STC CMC标志位: CCLD,STD功能: 设定方向标志语法: CLD STD标志位: DCLI,STI功能: 设定中断标志语法: CLI STI标志位: ICMP功能: 比较OP1与OP2的值语法: CMP r/m,r/m/data标志位: C,P,A,Z,OJMP功能: 跳往指定地址执行语法: JMP 地址JXX功能: 当特定条件成立则跳往指定地址执行语法: JXX 地址注:A: ABOVE,当C=0,Z=0时成立B: BELOW,当C=1时成立C: CARRY,当弁时成立CXZ: CX寄存器的值为0(ZERO)时成立E: EQUAL,当Z=1时成立G: GREATER(大于),当Z=0且S=0时成立L: LESS(小于),当S不为零时成立N: NOT(相反条件),需和其它符号配合使用O: OVERFLOW,O=1时成立P: PARITY,P=1时成立PE: PARITY EVEN,P=1时成立PO: PARITY ODD,P=0时成立S: SIGN,S=1时成立Z: ZERO,Z=1时成立LOOP功能: 循环指令集语法: LOOP 地址LOOPE(Z)地址LOOPNE(Z) 地址标志位: 无CALL,RET功能: 子程序调用,返回指令语法: CALL 地址RET RET n标志位: 无INT,IRET功能: 中断调用及返回指令语法: INT n IRET标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器字符串操作指令集MOVSB,MOVSW,MOVSD功能: 字符串传送指令语法: MOVSB MOVSW MOVSD标志位: 无CMPSB,CMPSW,CMPSD功能: 字符串比较指令语法: CMPSB CMPSW CMPSD标志位: C,P,Z,S,OSCASB,SCASW功能: 字符串搜索指令语法: SCASB SCASW标志位: C,P,Z,S,OLODSB,LODSW,STOSB,STOSW功能: 字符串载入或存贮指令语法: LODSB LODSW STOSB STOSW标志位: 无REP,REPE,REPNE功能: 重复前缀指令集语法: REP 指令S REPE 指令S REPNE 指令S标志位: 依指令S而定对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。
汇编语言期末试题及答案A
《汇编语言》期末试题(A卷)计算机科学技术、网络工程专业一、单选题(每小题2 分,共30 分)1.用DEBUG调试汇编语言程序时,显示数据的地址是5000:0400,此时数据的物理地址是()A.50400HB.5040HC.54000HD.5400H2.设ES=1100H,(12000H)=90H,(12001H)=20H,(12002H)=30H,执行MOV BX,ES:[1000H]则BX=( )A.90HB. 2090HC. 9020HD. 3020H3.8086中下列四条指令中错误的是( )A.MUL AX, BLB.MOV AX, [DI]C.DEC AXD.ADD AL,[SI]4. 指令ADD AL,[BX+SI]中源操作数是()寻址方式。
A. 寄存器B.直接C. 基址变址D. 相对基址变址5.指令MOV AX,0A5B6H MOV CL,4 ROL AX,CL 执行后,AX=( )A.0A5B6HB.0B6A5HC.00A5HD.5B6AH6.当执行指令CMP AX,BX后,若ZF=1,下面的叙述正确的是()。
A 表示AX和BX内容不相同B 表示AX和BX内容相同C 表示AX内容大于BXD 表示AX内容小于BX7.定义宏的伪指令是( )A.PROC和ENDPB.SEGMENT和ENDSC.EQU和ENDD.MACRO和ENDM8. 完成同指令LEA AX,BUF 相同功能的指令是( )A. MOV AX, BUFB. LDS AX,BUFC. MOV AX,SEG BUFD. MOV AX,OFFSET BUF9. 循环指令LOOP NEXT,终止循环操作的条件是( )A. CX=0且ZF=0B. CX=0C. CX=0 且ZF=1D. CX=0 或ZF=110.有数据定义NUM DB 2 DUP ( 1,2,3,4,5) ,NUM占有( )字节存储单元。
A.4B.5C.6D.1011.在8086/8088系统中,用于确定堆栈栈顶地址的寄存器有( )A.CS:IPB.SS:SPC.DS:SID.DS:DI12. IN AX, 20H指令中的20H是( )。
《汇编语言功能号大全》
《汇编语言功能号大全》汇编语言功能号大全汇编语言是一种底层、机器级别的编程语言,主要用于编写低层次的系统软件和嵌入式设备的驱动程序。
在汇编语言中,各种功能号(Function Code)被用于告知计算机执行特定的操作,在编写程序时起到了至关重要的作用。
本文将为您介绍一些常用的汇编语言功能号,以帮助您更好地理解和运用汇编语言。
1. 数据传输功能号数据传输是汇编语言中最基本的操作之一。
以下是一些常见的数据传输功能号:1.1 MOV:将数据从一个位置复制到另一个位置。
1.2 XCHG:交换两个位置中的数据。
1.3 LEA:将一个内存地址复制到一个寄存器中。
1.4 PUSH:将数据压入栈中。
1.5 POP:将数据从栈中弹出。
2. 算术运算功能号算术运算在编程中经常用到,汇编语言提供了丰富的算术运算功能号,包括:2.1 ADD:将两个数相加。
2.2 SUB:从一个数中减去另一个数。
2.3 INC:将一个数加1。
2.4 DEC:将一个数减1。
2.5 MUL:将两个数相乘。
2.6 DIV:将一个数除以另一个数。
3. 逻辑运算功能号逻辑运算是程序中常用的操作之一,以下是一些常见的逻辑运算功能号:3.1 AND:对两个数执行逻辑与操作。
3.2 OR:对两个数执行逻辑或操作。
3.3 XOR:对两个数执行逻辑异或操作。
3.4 NOT:对一个数执行逻辑非操作。
4. 控制转移功能号控制转移是指在程序执行过程中跳转到另一个位置继续执行,以下是一些常见的控制转移功能号:4.1 JMP:无条件跳转到指定地址。
4.2 JZ:如果零标志位为真,则跳转到指定地址。
4.3 JC:如果进位标志位为真,则跳转到指定地址。
4.4 JNC:如果进位标志位为假,则跳转到指定地址。
4.5 CALL:调用一个子程序。
4.6 RET:返回到调用子程序的位置。
5. 中断功能号中断是汇编语言中常用的机制之一,用于处理外部事件和异常情况。
以下是一些常见的中断功能号:5.1 INT:触发指定的中断。
汇编程序的功能
语音模块
LCD模块
A/D 、 D/A 模块
8255 实 验 模 块
8254 实 验 模 块
LED 、 开 关 模块
小键盘、7段 数码 管模 块
其他可插拔的模块:开关量I/O模块、12位A/D,D/A模块、CPLD模块等
实验箱结构
实验箱结构
实验箱背面
连线
四、具体实验
1、调试工具debug的使用及基本指令的用法 2、 简单程序的编制及汇编过程 3、 宏汇编程序的基本语法及程序编制 4、 系统功能调用 5、中断处理程序的编制 6、微机简单I/O接口的操作 7、可编程并行接口芯片8255A的使用
MASM(或ASM)〈源文件〉,[〈目标文件〉],[〈列表文
件〉],[〈交叉参考文件〉][/开关]
3)程序连接
连接程序LINK用来连接汇编程序生成的目标代码文件
(.OBJ)以及指定的库文件,产生一个可执行的装入文 件(.EXE)。 连接程序有3种启动方式: (1) 提问方式
(2) 命令方式
写盘命令W
格式:
W [地址]或W
QTH-2008PC集成开发环境
开发环境界面
三、实验设备
键盘、鼠标
显示器
网口、 USB 接口、 串并口等
步进电机、 直 流 电 机 模块
嵌入式PC104主板 GX1-300 586CPU、128M 内存、256M DOM电子盘 总线地址译码、总线引线扩 展底板
宏指令,只能有限制的使用伪指令
MASM:宏汇编程序,必须在96KB以上的内存条件下
运行,可以使用所有的宏指令和伪指令
汇编程序的功能:
检查和编制源程序 把初始已经分配地址的目标程序重新分配为其它的地
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DX=设备信息
45H
复制文件号
BX=文件号1
成功:AX=文件号2;
出错:AX=错误码
46H
强制文件号
BX=文件号1,CX=文件号2
成功:AX=文件号1;
出错:AX=错误码
47H
取当前路径名
DL=驱动器号,DS:SI=ASCII串地址
DS:SI=ASCII串;
失败:AX=错误码
2FH
取DTA地址
ES:BX=DTA首地址
30H
取DOS版本号
AL=主版本号,AH=辅版本号
31H
程序终止并驻留
AL=返回码,DX=驻留大小
33H
ctrl-break检测
AL=00取状态AL=01置状态
DL=00H关闭,DL=01H打开
35H
获取中断向量
AL=中断向量号
ES:BX=中断向量
36H
取可用磁盘空间
AL=控制分析标志
AL=00H标准文件
AL=01H多义文件
AL=FFH非法盘符
2AH
取日期
CX:DH:DL=年:月:日
2BH
设置日期
CX:DH:DL=年:月:日
2CH
取时间
CH:CL=时:分,DH:DL=秒:百分秒
2DH
设置时间
CH:CL=时:分,DH:DL=秒:百分秒
2EH
设置磁盘写标志
AL=00关闭,AL=01打开
DS:DX=FCB首地址
AL=00H写成功
AL=01H盘满
AL=02H DTA空间不够
16H
创建文件
DS:DX=FCB首地址
AL=00H创建成功,
AL=FFH无磁盘空间
17H
文件改名
DS:DX=FCB首地址
(DS:DX+1)=旧文件名
(DS:DX+17)=新文件名
AL=00H改名成功,
AL=FFH不成功
CX:DX=位移量
AL=移动方式
成功:DX:AX=新指针位置
出错:AX=错误码
43H
读取/设置文件属性
DS:DX=ASCII串,
AL=0/1取/置属性,
CX=文件属性
成功:CX=文件属性
失败:AX=错误码
44H
设备I/O控制
BX=文件号;
AL=0取状态,AL=1置状态,
AL=2读数据,AL=3写数据,
CX=读取字节数
成功:
AX=实际读出字节数,
AX=0已到文件尾
出错:
AX=错误码
40H
写文件或设备
DS:DX=数据缓冲区地址,
BX=文件号,
CX=写入字节数
成功:AX=实际写入字节数
出错:AX=错误码
41H
删除文件
DX:DX=ASCII串
成功:AX=00;
失败:AX=错误码
42H
移动关闭指针
BX=文件号,
DS:DX=FCB首地址
AL=00H文件找到,AL=FFH未找到
13H
删除文件
DS:DX=FCB首地址
AL=00H删除成功,AL=FFH未找到
14H
顺序读
DS:DX=FCB首地址
AL=00H读成功
AL=01H文件结束,记录无数据
AL=02H DTA空间不够
AL=03H文件结束,记录不完整
15H
顺序写
22H
随机写
DS:DX=FCB首地址
AL=00H写成功
AL=01H盘满
AL=02H缓冲区溢出
23H
文件长度
DS:DX=FCB首地址
AL=0成功,长度在FCB。AL=1未找到
24H
设置随机记录号
DS:DX=FCB首地址
25H
设置中断向量
DS:DX=中断向量,AL=中断向量号
26H
建立PSP
DX=新的PSP
功能号
功能
入口参数
出口参数
00H
程序终止
CS=程序段前缀的段地址
01H
键盘输入
AL=输入字符
02H
显示输出
DL=输出显示的字符
03H
串行通信输入
AL=接受字符
04H
串行通信输出
DL=发送字符
05H
打印机输出
DL=打印字符
06H
控制台输入输出
DL=FFH(输入),DL=字符(输出)
AL=输入字符
07H
27H
随机块读
DS:DX=FCB首地址
CX=记录数
AL=00H读成功
AL=01H文件结束
AL=02H缓冲区溢出
AL=03H缓冲区不满
28H
随机块写
DS:DX=FCB首地址
CX=记录数
AL=00H写成功
AL=01H盘满
AL=02H缓冲区溢出
29H
分析文件名
ES:DI=FCB首地址
DS:SI=ASCII串
AX=错误码
3CH
建立文件
DS:DX=ASCII串,CX=文件属性
成功:AX=文件号;
失败:AX=错误码
3DH
打开文件
DS:DX=ASCII串,
AL=0/1/2读/写/读写
成功:AX=文件号;
失败:AX=错误码
3EH
关闭文件
BX=文件号
AX=错误码
3FH
读文件或设备
DS:DX=数据缓冲区地址
BX=文件号
无回显键盘输入
AL=输入字符
08H
无回显键盘输入
AL=输入字符
09H
显示字符串
DS:DX=字符串地址
0AH
输入字符串
DS:DX=缓冲区地址
0BH
检验键盘状态
AL=00H有输入,AL=FFH无输入
0CH
清输入缓冲区,执行指定输入功能
AL=输入功能号(1、6、7、8、AH)
0DH
磁盘复位
清除文件缓冲区
0EH
DS:DX=新ASCII串
AX=错误码
57H
设置/读取文件日期和时间
BX=文件号,AL=0读取
AL=1设置(DX:CX)
DX:CX=日期和时间
失败:AX=错误码
48H
分配内存空间
BX=申请内存容量
成功:AX=分配内存首址
失败:BX=最大可用空间
49H
释放内存空间
ES=内存起始段地址
失败:AX=错误码
4AH
调整分配的内存空间
ES=原内存起始地址
BX=再申请内存容量
失败:AX=错误码
BX=最大可用空间
4BH
装入/执行程序
DS:DX=ASCII串,
ES:BX=参数区首地址
AL=0/3执行/装入不执行
失败:AX=错误码
4CH
程序终止
AL=返回码
4DH
取返回码
AL=返回码
4EH
查找第一个目录项
DS:DX=ASCII串地址,CX=属性
AX=错误码
4FH
查找下一个目录项
DS:DX=ASCII串地址
AX=错误码
54H
读取磁盘写标志
AL=:DX=旧ASCII串,
DL=驱动器号
成功:
AX=每簇扇区数,BX=有效簇数,CX=每扇区字节数,DX=总簇数
失败:
AX=FFFFH
38H
取国家信息
DS:DX=信息区地址
BX=国家代码
39H
建立子目录
DS:DX=ASCII串
AX=错误码
3AH
删除子目录
DS:DX=ASCII串
AX=错误码
3BH
改变目录
DS:DX=ASCII串
选择磁盘驱动器
DL=驱动器号
AL=驱动器数
0FH
打开文件
DS:DX=FCB首地址
AL=00H文件找到,AL=FFH文件未找到
10H
关闭文件
DS:DX=FCB首地址
AL=00H目录修改成功,AL=FFH未找到
11H
查找第一个目录项
DS:DX=FCB首地址
AL=00H找到,AL=FFH未找到
12H
查找下一个目录项
19H
取当前磁盘
AL=当前驱动器号
1AH
设置DTA地址
DS:DX=DTA地址
1BH
取缺省驱动器FAT信息
AL=每簇的扇区数,
DS:BX=FAT标识字节
CX=物理扇区的大小,
DX=驱动器和簇数
21H
随机读
DS:DX=FCB首地址
AL=00H读成功
AL=01H文件结束
AL=02H缓冲区溢出
AL=03H缓冲区不满