




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、(1)若把1K字节的数据块从偏移地址为1000H开始的单元传送到偏移地址为1400H开始的缓冲区。用一般传送指令两种方法实现。 要得到内存中某个小单元的内容,必须先知道这个单元对应的偏移地址,偏移地址外面加就表示这个单元的内容。 再参见循环指令。,(2) 在ASD开始的存储器单元存放10个无符号的字节数,找出其中的最小数,存入原数据之后 参见LEA地址传送指令 比较指令,例2.28 控制传送指令,3.地址传送指令 80868088CPU提供了三条把地址写入寄存器的指令: (1)有效地址送寄存器指令 指令格式: LEA 寄存器,源操作数 功 能: 某寄存器源操作数的偏移地址 操作说明:将源操作数
2、SRC(必须是一个存储器类型操作数,因为只有存储器单元才有偏移地址)的偏移地址(16位)装入到16位目标寄存器REG中。,【例2.15】设DS=3000H,BX=2000H,SI=1000H,34000H=56H,34001H=12H,执行指令LEA AX,BX+SI+1000H执行的结果是:AX=BX+SI+1000H=4000H。而MOV AX,BX+SI+1000H指令是将偏移地址为BX+SI+1000H的内存单元的内容送到AX中,结果是AX=1256H。 除了LEA 寄存器, 这种形式,更多的是LEA 寄存器,变量 的形式 变量是指在程序的运行过程中随时可以发生变化的量,变量是程序中数
3、据的临时存放场所,你能够把程序中准备使用的每一段数据都赋给一个任意、简短、易于记忆的名字,这就是变量名。,如FOX DB 1,2,3,4,5 表示一个名为FOX的变量中包含了1,2,3,4,5这5个字节数,占用了5个内存 的字节单元,如果要得到其中某个 单元的内容,就要取得该单元对应 的偏移地址,比如要得到4单元的 内容5,首先要取得0单元的偏移地址 0单元偏移地址+4=4单元偏移地址 4单元偏移地址=4单元的内容 LEA BX,FOX 把变量FOX的偏移地址给BX寄存器 默认FOX的首单元偏移地址送BX,FOX,0单元,4单元,BX+4=?,LEA指令的功能也可用MOV指令来实现,下面两条指
4、令是等效的: LEA BX,BUFFER MOV BX,OFFSET BUFFER 指令中的OFFSET称为取偏移地址操作符。上述两条指令均可完成将变量(或标号)BUFFER的偏移地址送BX寄存器的功能。 但是应该注意的是MOV REG,OFFSET SRC 后面的源操作数不可以为EA,只能是一个变量(或标号)。而LEA 寄存器,源操作数后面的源操作数可以是EA。 指令MOV DI,OFFSET BXSI是对是错?,(5)比较指令 指令格式: CMP 目的操作数,源操作数 功 能: 目的操作数-源操作数 操作说明: CMP指令将目的操作数减去源操作数,但结果不送回目的操作数。即只做减法运算,不
5、保留差的值,运算结果的性质反映在状态标志位上。这是比较指令CMP与减法指令SUB的区别所在。 CMP指令中目的操作数和源操作数的类型与SUB指令相同。可以进行字节比较,也可以进行字比较。,【例2.26】CMP AL,0AH CMP AX,AREAl CMP BX+5,SI CMP指令常常与条件转移指令结合起来使用,完成各种条件判断和相应的程序转移。 比较指令的执行结果将影响状态标志位。根据标志寄存器内容可判断两数大小。,例如:执行CMP 目的操作数,源操作数后: 若ZF=1,则目的操作数=源操作数 利用JZ/JNZ指令 当两数为无符号数时,作无符号数比较: 若CF=1,则目的操作数源操作数 若
6、CF=0,则目的操作数源操作数 利用JC/JNC指令 两个带符号数比较:若OF与SF同号,则目的操作数源操作数 若OF与SF异号,则目的操作数源操作数 利用JGE等指令,A和B均为带符号数,两个带符号数比较,可能出现4种情况。 第一种情况:A0,B0,两正数比较,如无溢出,若结果的符号标志SF=0,则A=B;反之,A=B;反之,SF=1,则A0,BB,如无溢出,OF=0,SF=0,有溢出时,OF=1,SF=1 例如,A=+50,B=-63, A-B=113=01110001+127,不溢出,机器中的结果为+50补 00110010 + +63补 00111111 01110001 =113 S
7、F=0,OF=0 如A=+127,B=-63, A-B=127- (-63)=+190+127,溢出,OF=1,SF=1 机器中的结果为+127补 01111111 + +63补 00111111 10111110 =190 SF=1,OF=1,第四种情况: A0,两异号数比较,结果必然是AB,结果不溢出,OF=0,SF=1,当结果发生溢出时,OF=1,SF=0。 例如,若A=-63,B=+50,显然AB,比较结果是,A-B=-113=10001111,其OF=0,SF=1; 若A=-63,B=+127,比较结果是: A-B=-63-(+127)=-90-128,溢出,OF=1,SF=0 在机
8、器中的结果为: -63补=11000001 -63补=11000001 +-50补=11001110 +-127补=10000001 10001111=-113 01000010=-190,比如AL和BL中分别有一个数,要比较它们的大小,CMP AL,BL,AL-BL,AL和BL比较的时候有几种结果,1、无符号数比较:,当CF=1,当CF=0,ALBL,AL=BL,2、带符号数比较:,AL-BL,当0F与SF异号,ALBL,AL=BL,当0F与SF同号,当ZF=1,当ZF=0,AL=BL,ALBL,当ZF=1,当ZF=0,AL=BL,ALBL,【例2.27】判断寄存器AX与BX的内容是否相等,
9、若相等,使DX=1,否则,使DX=0。 解:程序如下 CMP AX ,BX JZ EQUAL ;跳转指令:如果就跳转到EQUAL MOV DX,0 JMP NEXT 跳转指令,无条件直接转NEXT EQUAL: MOV DX,1 NEXT: HLT,AXBX 如果ZF=1,跳转到 代表DX=1的指令处执行 否则使DX=0 代表DX=1的指令 结束,AX-BX,如果ZF=1,否则ZF=0,AL=BL,AL=BL,那么使DX=1,使DX=0,【例2.28】在DATA开始的内存单元存有100个无符号字节数,找出其中最大数送MAX单元中。 程序如下: MOV SI,OFFSET DATA MOV AL
10、,SI INC SI MOV CL,99 AGAIN: CMP AL,SI JNC NEXT ;无借位转移到NEXT MOV AL,SI NEXT: INC SI DEC CL JNZ AGAIN ;CL不等于0转移到AGAIN MOV MAX,AL HLT,DATA的有效地址,MOV SI,OFFSET DATA,SI,SI与SI+1进行比较,即SI-SI+1,AL,-SI,MOV AL,SI,INC SI,使有效地址指向SI+1,CMP AL,SI,如果CF=0 则,否则CF=1 那么,ALSI,SIAL,要将比较出的大数与下一个 有效地址所对的数据单元比较 先将大数都放在AL中,方便比较
11、,下一个单元的有效地址=SI+1,以SI+1替换原来的SI,使有效地址指向下一个SI+1,以SI+1替换原来的SI,JNC A1 MOV AL,SI,INC SI,CMP AL,SI,共比较99次,设置循环次数,已经比较过一次,循环次数-1,MOV CL 99,循环次数减到0则循环结束,否则继续循环,A1:,B1:,DEC CL,JNZ B1,第六节 控制传送指令和CPU控制指令,重点:控制传送指令和CPU控制指令的格式、功能 难点:控制传送指令和CPU 控制指令的应用,注:目前我们学到的大部分程序都比较简单,都是一条一条指令顺序往下执行的,只有在遇到对于条件的判断(如果否则)时,才需要控制指
12、令的不同路径,控制其转移的方向。(条件判断出来如果是正数有的结果,否则是负数有的结果),SF=0,SF=1,首先明确几个概念: 目标标号:简单的说就是代表某指令或某程序段的标志符号,常用格式是 P1:MOV Z,AL ;P1就表示使Z=AL的指令 本条指令用P1这个符号来代表,所以P1就是目标标号。之所以加上目标这个词是因为这种标号常用在转移指令中,表示要转移到的指定目标位置。 比如,JS P1 ;如果SF=1,就跳转到P1所代表 的指令去执行 . P1:MOV Z,AL ;P1代表使Z=AL 如果SF=1,就使Z=AL,条件转移指令中,J代表如果 C代表CF=1,S代表SF=1,N表示NOT
13、,非 在JC/JS/JZ/JP/JO、JNC/JNS/JNZ/JNP/JNO的后面紧跟的是目标标号,而不能直接跟目标标号所代表的指令。 如只能写JS P1 ,而不能写JS MOV Z,AL 只要在MOV Z,AL前面加上标号P1, P1:MOV Z,AL 就表示当SF=1时,跳转到P1这个目标标号所代表的MOV Z,AL去执行,3.3.5 控制传送指令 80868088指令系统中有四组用于控制程序流向的指令,分别为:转移指令、循环控制指令、过程调用指令和中断指令。这些指令以不同的方式修改IP或CS、IP的内容,实现控制程序转移的目的。 1无条件转移指令 无条件转移指令使程序无条件地跳转到指令中
14、指定的目的地址去执行。 指令格式: JMP 目标标号 功 能: CPU转移到目标标号处执行 操作说明: 转移的目标标号按其位置上分类有以下五种形,如表2.1所示。,目前指令所在的位置 CS原:IP原,目前指令所在的位置 CS原:IP新,IP差值=IP新-IP原=-128+127,IP差值=IP新-IP原=-32768+32767,目前指令所在的位置 CS原:IP新,目前指令所在的位置 CS新:IP新,JMP AX ;IP差值=IP新-IP原放在AX中,JMP BX ;IP差值=IP新-IP原放在 BX和BX+1两个内存单元中,JMP DWORD PTRBXSI ; 将IP新放在BX+SIBX+
15、SI+1两个存储单元中 将CS新放在BX+SI+2BX+SI+3两个存储单元中,此表中的IP即指IP的差值=IP新-IP原,【例2.51】JMP NEXT ;为段内直接转移 JMP SHORT LP1 ;LP1为短距离标号,为段内直接转移 JMP AX ;AX中存放IP的差值,为段内间接转移 JMP BX ; BX+1和BX两个字节单元中存放IP的差值,为段内间接转移 JMP LABLE-NAME ;LABLE-NAME标号在其它代码段,为段间直接转移 JMP DWORD PTRBXSI ;DWORD PTR说明后面数据为双字。,2.条件转移指令 指令格式: JCC 目标标号 操作说明:指令中
16、的“CC”表示条件。以一个标志位或几个标志位的逻辑运算结果作为依据,判断是否实现转移。 条件转移指令的目标标号必须是一个近标号,即目标地址到转移指令的下一条指令之间的距离必须在-128+127的范围内。如果指令规定的条件满足,则将这个位移量加到IP寄存器上,即IPIP+disp8,实现程序的转移。,【例2.52 】 根据某一字节带符号数X是正、是零还是负数分别转移至标号为PLUS、ZERO、MINUS处执行,可用下列指令实现。 MOV AL,X ; MOV指令是否影响标志位 OR AL,AL ;为什么进行这一步? JS MINUS ;如果SF=1,则转到MINUS目标标号 JZ ZERO ;如
17、果ZF=1,则转到ZERO目标标号 PLUS: MINUS: ZERO: ,假设OF=0,注:上述带符号数比较的条件均假设OF=0,若OF=1,则各项判断条件相反 当两个带符号数相减后,若要判断被减数大于等于减数则跳转,需用? 指令 JGE,通过以上对于条件转移指令的描述,我们可以总结出分支程序的一般规律。 条件判断的准备工作 如果就转移到某目标标号处执行 否则就 某目标标号:指令,3 循环控制指令 循环转移指令控制转移的距离在-128+127的范围内。 其指令格式为:LOOPXX 目标标号 LOOP指令等效于下列指令 DEC CX JNZ 目标标号 因此,欲使用循环控制指令,应在循环程序开始
18、前,将循环次数送CX寄存器。,E.g 编写一个程序,比较 X 字节变量中的三个数,根据结果使FLAG字节变量得到不同的值。 (1)若三个数都为0,则FLAG字节变量置3 (2)若两个数为0,则FLAG置2。 (3)若一个数为0,则FLAG置1。 (4)若全不为0,则FLAG置0。,ORG 100H X DB 0,1,3 FLAG DB ? START: CMP X0,0 ;或者CMP X(+0),0 MOV DL,0 JNZ L1 INC DL L1: CMP X1,0 ;或者CMP X+1,0 JNZ L2 INC DL L2: CMP X2,0 ;或者CMP X+2,0 JNZ L3 IN
19、C DL L3: MOV FLAG,DL HLT,x变量,(3) 已知数据区DDA开始的存储单元中,存有26个字母,将其转换成小写字母后,放回原数据区中,并显示输出。 参见LEA地址传送指令 CMP 比较指令 控制传送指令 ASCII码表 DOS功能调用,(4) 编写一个多字节的十进制加法程序,计算8923896658+3466659878。 参见BCD码的运算以及调整指令 尤其例2.54,6. 十进制数(BCD码)运算调整指令 以上介绍的是二进制数的算术运算。有的场合需要使用十进制数,计算机中十进制数用BCD码来表示。BCD码有两类:一类叫压缩型BCD码(1个字节存放2位BCD码),一类叫非
20、压缩型BCD码(1个字节中只存放1位BCD码)。在用BCD码进行十进制数加、减、乘运算时,应分两步进行: 先按二进制数运算规则进行运算,得到中间结果。 用十进制调整指令对中间结果进行修正,得到运算结果的BCD码。 注 意:BCD码的运算只能在8位累加器AL中进行。十进制数的乘、除运算只能用非压缩的BCD格式。除法运算时,应先调整,后运算。,为了方便简洁,8位二进制经常被写成两位十六进制的形式,在我们编写汇编语言源程序时, 8位BCD码一般不能被写成如(000111100)BCD的形式,那么8位BCD码可以被写成什么形式呢?,首先我们来观察十进制数对应的8位BCD码和十六进制对应的二进制。 比如
21、,66 =(01100110)BCD 66H= 01100110 当它们都看成二进制进行运算的时候是没有区别的。 在运算的时候,比如我们要将66+81,先把它们转换成BCD码 (01100110)BCD 01100110=66H +(10000001)BCD 10000001=81H 接着按照二进制运算法则进行计算,这时实际上等同于66H的二进制形式 + 81H的二进制形式,也就是说可以将它们写成66H + 81H,然后我们根据,BCD码逢十进一的特点进行相应的调整,最终使66H+81H变成66+81的效果。 (01100110)BCD 01100110=66H +(10000001)BCD
22、10000001=81H 11100111 11100111 +01100000 01000111 (1)压缩型BCD码调整指令 指令格式: DAA ;加法调整 DAS ;减法调整 操作说明:将加法(ADD或ADC)或减法(SUB或SBC)运算的结果(在AL寄存器中)调整为压缩BCD码。注意,参与运算的应是压缩BCD码。,1,【例2.30】 48+29=77 请对照二进制 运算结果得不到77的压缩BCD码,是因为在进行二进制加法运算时,低四位向高四位有个进位,这个进位是按十六进制进行的,即低4位逢16才向高四位进1,而十进制数应是逢十进一。因此,比正确结果少6,这时,调整指令应在相加结果的低4
23、位上加6。即:,上述运算过程用指令实现如下: MOV AL,48H ADD AL,29H DAA ;运算结果仍然在AL中 注意:BCD码的运算只能在8位累加器AL中进行。因此,大家考虑下如果是这样的十进制数1125+5983,能不能在AL中进行BCD码的运算与调整?,题库中有一题 若(AX)=96H,(BX)=65H,依次执行ADD AX,BX指令和DAA指令后,(AL)=(61H)。 (A) 0FBH (B) 01H (C) 61H (D) 0BH总结上面学到的知识 只要程序运行到DAA指令,我们和程序都应该明确两件事: 1.DAA之前的加法指令ADD实际上不是对16进制数相加,而是对BCD
24、码也就是十进制数进行运算,所以上题其实是96+65 2.立刻对前面的BCD码的运算进行调整,以便最终得到BCD码相加的正确答案。,【例2.54】 对两个4位十进制数进行求和运算,十进制数用BCD码表示(1234+5678)。 解: 分析:因为BCD码的运算与调整只能在AL中进行,AL中一次只能存得下两位十进制数12或者34,也就是说只能单独进行两位十进制数的加法,那么四位十进制数的加法应该怎样运算与调整呢? 在计算中考虑到多位运算,高位使用带进位加法指令,并注意进行十进制加法调整。,程序如下: DATl DB 12H,34H DAT2 DB 56H,78H SUM DB ?,? BEGIN:M
25、OV AL,DAT1+1 ADD AL,DAT2+1 DAA MOV SUM+1,AL MOV AL,DAT1 ADC AL,DAT2 DAA MOV SUM,AL HLT,一条指令一条指令 顺序往下执行, 没有分支,也不循环,补充: 假如现有一变量S,里面有若干个小单元,每个单元存有一个字节数 S DB 5,93,64,85,73,61. 要得到其中某单元的的内容,有三种方法。 (1)最一般的方法,当S含有的单元数量较 多的情况下使用。 LEA DI,S;将S中首单元的偏移地址送DI MOV AL,DI;已知DI为S中首单元的偏移 地址,DI=S中首单元的内容 INC DI ;DI变成DI+
26、1 MOV AL,DI ;DI=S中1单元的内容 ,S,当S中含有的单元数较少时可以用以下两种方法: (2)S0表示S中0单元的内容 S1表示S中1单元的内容 (3)S+0表示S中0单元的内容 S+1表示S中1单元的内容 S0= S =5 S1=S+1=93 S2=S+2=64 ,(5) 已知存储DA开始的存储单元中存有20个带符数,对各数求绝对值后存入原单元中。 参见LEA地址传送指令 以及下面的例子。,已知 x=43 , y =56 , 编写汇编程序, 求 z=|x-y| mov al, 43 sub al, 56 jns p1 neg al p1: mov z,al hlt,X-Y,如果
27、SF=0,否则SF=1,转到目标标号 P1代表的指令处执行,使AL=X-Y的相反数,把AL放到Z中,把AL放到Z中,使z=|x-y|,P1就代表Z=AL,等同于,AL=XY 如果SF=0 转到P1 否则 XY取相反数 P1:Z=AL,X-Y,如果SF=0,否则SF=1,使AL=X-Y的相反数,P1: 直接使Z=AL,使Z=AL,题目变成求|AL|,(6) 编写汇编程序,判断AX中的数是正数还是负数,若AX0 显示“AX0”, 否则显示“AX0”。 参见09号DOS功能调用 思考:判断正负有几种方法 SAL AX,1 JC 某目标标号 AND AX,AX JS 某目标标号,(7) 已知在数据区有
28、 um db “AABBCCDDE” , 编写汇编程序,用反序方式显示出字符串。(提示:要用中断调用)。 参见LEA地址传送指令 02号DOS功能调用 先找到该字符串的首字符的地址,首字符的地址加8变成末字符的地址,地址逐渐减1,分别变成前面每个字符的地址,用02号功能调用,第十四节 DOS功能调用,重点:DOS功能调试方法,2.5.5 DOS系统功能调用 首先我们来简单了解一下何谓调用/中断调用,系统功能调用 对于用户所需要的某些常用功能,由系统设计者事先编制好能够实现这些功能的例行子程序的模块,作为操作系统程序模块的一部分,并且给每种功能模块一个中断调用类型号。当我们需要这些功能时,就用一
29、定的方法调用这些功能模块。我们本节课就是学习调用这些功能模块的固定方法。,用户所需要的功能,有些是比较复杂的,硬件不能直接提供,只能通过软件的程序来实现。而有些功能,硬件有相应的指令,如启动外设工作,硬件就有 I/O 指令。但配置了操作系统后,对系统资源的分配、控制不能由用户干预,而必须由操作系统统一管理。所以,对于这样一类功能,也需有相应的控制程序来实现。 系统功能调用包括BIOS和DOS调用。 BIOS是系统提供的基本输入输出例行程序,利用BIOS功能编写的程序简洁,可读性好,而且易于移植。DOS是PC机上最重要的操作系统,它和BIOS一样包括有近百个设备管理、目录管理和文件管理程序,是一
30、个功能齐全、使用方便的中断例行程序的集合。使用DOS操作比使用相应功能的BIOS操作更简易,而且对硬件的依赖性更少些。,是DOS为用户提供的常用子程序(80多个),可在汇编语言程序中直接调用。DOS操作系统为程序设计人员提供了许多DOS功能调用,即功能子程序,供用户调用。调用时使用中断指令: INT n 其中,n为中断调用类型号,其范围是10H-0FFH。 本节我们学到的中断类型号都是21H,即INT 21H 在使用INT指令前,应将调用的功能号送入AH寄存器,有关入口参数送入指定的寄存器中。 若有出口参数,中断返回后,放在指定的寄存器或存储单元中,用户可以取出使用。,说明: (1)表上端横排
31、为二进制ASCII码的高4位,表左端纵排为低4位。 (2)表中:代表空白,代表空格,代表响铃,代表换行,代表回车,代表特殊空格。,1.带显示的键盘输入(AH=01H) 该功能调用是等待键盘输入,按下一个键(字符键)后,将字符的ASCII码送入寄存器AL,并在屏幕上显示输入的字符。按下CTRL+C组合键,将中断程序运行,返回DOS。功能调用没有入口参数,出口参数放在寄存器AL中。 ORG 100H START: MOV AH,01H INT 21H 以上程序运行后会出现黑色显示框,并提示请输入数据,如输入数据5,屏幕上马上出现5,AL中出现“5”的ASCII码35H。,【例2.63】 从键盘输入
32、一个字符,并在显示器上输出,按下CTRL+C组合键时结束。程序设计如下: PROMPT DB PRESS ANY KEY TO DISPLAY!, 0DH,0AH DB PRESS CTRL+C TO EXIT!,0DH,0AH,$ BEGIN:LEA DX,PROMPT MOV AH,09H INT 21H AGAIN:MOV AH,01H INT 21H JMP AGAIN RET,2.不带显示的键盘输入(AH=08H) 该功能调用与01H号功能基本相同,差别是键盘输入的字符不在屏幕上显示,AL寄存器中存放键入字符的ASC码。功能调用格式如下: ORG 100H START: MOV AH
33、,08H INT 21H 以上程序运行后会出现黑色显示框,并提示请输入数据,如输入数据5,屏幕上无显示,但是AL马上变成35H。,3.字符串输入(AH=0AH) 该功能调用是从键盘上输入一行字符。使用前,应在内存中腾出一段空间,建立一个输入缓冲区,该区域用变量名来表示,用来存放键盘输入的数据。如果输入字符个数超过缓冲区的最大容量,后面的字符将被略去(铃声提示),ORG 100H B1 DB 10 ;缓冲区的第一个字节存放1-255之 间的数,定义该缓冲区的大小; DB ? ;第二个字节存放用户本次调用时键盘实际输入的字符个数,这个数在中断返回时,由操作系统自动填入,比如我们实际输入的是5个数,
34、操作系统自动填入5所以一般可以不用管它 DB 10 DUP(?);输入的字符串从第三个字节开始存放,可以由键盘输入,因此在定义变量的时候也可以不用写具体数值,键盘输入完后,按下回车键结束字符串,系统自动将回车代码(0DH)放在字符串的末尾。 DB $ ; 串结束符$,ORG 100H B1 DB 10 ;定义一个最大为10字节的缓冲区域 也就是说从键盘最多可以输10个字符 DB ? DB ? DB $ START:LEA DX,B1 ;调用前必须将缓冲区 首地址装入DX中 MOV AH,0AH INT 21H,【例2.64 】 从键盘上输入字符串,以回车作为结束,字符串存入BUFFER+2开始
35、的单元中。 ORG 100H PROMPT DB PRESS RETURN KEY TO EXIT,0DH,0AH,$ ;显示字符串PRESS RETURN KEY TO EXIT,接着回车,换行,结束 BUFFER DB 80,0 ;最多可输入80个字符 DB 81 DUP(0) ;从BUFFER+2才开始存数据 DB $ BEGIN:LEA DX,PROMPT MOV AH,09H INT 21H LEA DX,BUFFER ;刚刚输入的字符串存到BUFFER+2 开始的缓冲区 MOV AH,0AH INT 21H,上例中最多可输入80个字符,BUPFER中第81个内存单元可存放回车代码。
36、 4.字符显示(AH=02H) 在屏幕上显示单个字符,调用时将需显示字符的ASC码存入DL中。例如,要在屏幕上显示字符Y,可以进行如下调用: ORG 100H START: MOV DL,Y MOV AH,02H INT 21H 运行后屏幕上出现“Y”,5.字符打印(AH=05H) 该功能调用是把DL寄存器的内容(ASCII码)送到打印机输出,使用时可以如下调用: MOV DL,N MOV AH,05H INT 2lH,6.字符串显示(AH=09H) 该功能调用是在显示器上显示字符串。调用前把需要显示的字符串存入缓冲区,在字符串的结尾存入$符号(显示结束符号),并将缓冲区的首址送DX寄存器 LEA DX,BUFFER / MOV DX,OFFSET BUFFER,调用的格式如下: ORG 100H STRING DB ABCDEFG,$ START: MOV DX,OFFSET STRING MOV AH,09H INT 21H,7. DOS调用应用举例 【
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论