汇编语言程序举例课件

上传人:我*** 文档编号:141220862 上传时间:2020-08-05 格式:PPT 页数:45 大小:107.50KB
返回 下载 相关 举报
汇编语言程序举例课件_第1页
第1页 / 共45页
汇编语言程序举例课件_第2页
第2页 / 共45页
汇编语言程序举例课件_第3页
第3页 / 共45页
汇编语言程序举例课件_第4页
第4页 / 共45页
汇编语言程序举例课件_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《汇编语言程序举例课件》由会员分享,可在线阅读,更多相关《汇编语言程序举例课件(45页珍藏版)》请在金锄头文库上搜索。

1、3.3.6 汇编语言程序举例,例1:将ASCII码表示的两位16进制数转换成一字节二进制数。 算法:41H,36H(A6H)1010 0110B,一位位进行 程序: DATA SEGMENT ASHEX DB 41H,36H BIN DB ? DATA ENDS,CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS,AX MOV SI,OFFSET ASHEX MOV AL,SI SUB AL,30H CMP AL,0AH JB NEXT1 SUB AL,7 NEXT1: MOV CL,4 SAL AL,CL MOV BL

2、,AL;存高位,INC SI MOV AL,SI SUB AL,30H CMP AL,0AH JB NEXT2 SUB AL,7 NEXT2:OR AL,BL;合并 MOV BIN,AL MOV AH,4CH INT 21H CODE ENDS END START,例2: 编程实现,将ASCII码表示的5位十进制数(65535)转换成两字节二进制数。 分析: BX=9625=(0*10+9)*10+6)*10+2*10+5 程序: DATA SEGMENT ASDEC DB 33H,39H,36H,32H,35H COUNT EQU $-ASDEC BIN DW ? DATA ENDS,COD

3、E SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS,AX MOV SI,OFFSET ASDEC MOV CX,COUNT XOR AX,AX AGAIN: ADD AX,AX MOV BX,AX ADD AX,AX ; MOV CL,2 ADD AX,AX ;SAL AX,CL ADD AX,BX ;CL需保护,MOV BH,0 MOV BL,SI SUB BL,30H ADD AX,BX INC SI LOOP AGAIN MOV BIN,AX MOV AH,4CH INT 21H CODE ENDS END START,

4、XCHG AX,BX;保存到BX,且原 MOV CX,10 ;BX*10 MUL CX XCHG AX,BX ADD BX,AX,例3:将16位二进制数转换成用ASCII码表示的5位十进制数。 算法:依次减10000,1000,1,够减,计数,不够减,恢复,然后,计数结果转ASCII码。 程序: DATA SEGMENT BIN DW 358H ASDEC DB 5DUP(?) PWTAB DW 10000,1000,100,10,1 DATA ENDS,CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS,AX MOV

5、DI,OFFSET ASDEC MOV SI,OFFSET PWTAB MOV AX,BIN LOP1: XOR CL,CL MOV BX,SI LOP2: SUB AX,BX JB NEXT INC CL,JMP LOP2 NEXT: ADD AX,BX;不够减,恢复 ADD CL,30H ;转成ASCII码 MOV DI,CL INC SI INC SI INC DI CMP BX,1 JNZ LOP1 MOV AH,4CH INT 21H CODE ENDS END START,例4:将4字节的组合BCD码分为4个单字节数相加,从低字节开始,进行4次循环操作. 程序如下: DATA SE

6、GMENT BCD1 DB 76H,54H,38H,29H BCD2 DB 49H,37H,65H,17H SUM DB 4 DUP(?) DATA ENDS,STACK SEGMENT STACK STACK STAK DB 10 DUP(?) TOP EQU LENGTH STAK STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BCDADD:MOV AX, SEG DATA MOV DS,AX LEA SI,BCD1 ; MOV SI,OFFSET BCD1 LEA BX,BCD2 LEA DI,SUM MOV CL,4 C

7、LC,AGAIN: MOV AL,SI ADC AL,BX DAA MOV DI,AL INC SI INC BX INC DI DEC CL JNZ AGAIN MOV AX,4C00H INT 21H CODE ENDS END BCDADD,例5:编程实现,把从键盘输入的0FFFFH的十六进制正数转换为十进制数并从屏幕上显示出来。 调用HEXIBIN和BINIDEC两个子程序。用Ctrl Break退出。 主程序: display equ 02H key_in equ 01H doscall equ 21H crlf 宏指令定义同前。,Main proc far main1 call h

8、exibin crlf call binidec crlf jmp main1 ret main endp hexibin改成子程序。,ERROR DB ERROR!,0DH,0AH,$ . hexibin PROC XOR BX,BX NEWCHAR: MOV AH,KEY_IN INT DOSCALL SUB AL,30H JB KKK CMP AL,0AH JB GETS,CMP AL,11H JB KKK SUB AL,07H CMP AL,0FH JBE GETS CMP AL,2AH JB KKK CMP AL,2FH JA KKK SUB AL,20H GETS: MOV CL,

9、04H SHL BX,CL,XOR AH,AH ADD BX,AX JMP GGG KKK: MOV AH,09H MOV DX,OFFSET ERROR INT 21H PUSH DX CRLF POP DX RET hexibin ENDP,binidec proc mov cx,10000 call dec_div mov cx,1000 call dec_div mov cx,100 call dec_div mov cx,10 call dec_div mov cx,1 call dec_div ret,dec_div proc mov ax,bx ;被除数放DX,AX mov dx

10、,0 div cx mov bx,dx ;余数到BX mov dl,al ;显示商,而商10 add dl,30h mov ah,display int doscall ret dec_div endp,3.3.7 DOS系统功能调用和ROM BIOS中断调用,1、DOS调用(磁盘操作系统调用) 由软盘或硬盘提供的,比BIOS用起来更方便,因提供了更多更必要的测试。且对硬件依赖性更少。 中断类型号:20H27H,1)功能:向用户提供各种操作命令和许多系统功能调用。主要功能: (1)磁盘的读写、控制 (2)内存管理、文件操作和目录操作 (3)基本输入输出管理(如键盘、打印机、显示器、磁盘等管理)

11、,还有时间、日期等子程序。 需要时可直接调用84个功能子程序。,DOS的两个主要模块 (1)输入输出设备处理程序IBMBIO.COM 提供DOS到ROM BIOS的低级接口,完成 内存外设的数据传送。 (2)文件管理和系统调用程序IBMDOS.COM 高级文件系统接口,在DOS下运行的程序可调用。,例:完成一个用户程序请求,输入输出时各关系如下: 用户程序 高级DOS 低级DOS ROM 注意:有些情况既能选DOS中断也可选择BIOS中断来完成。尽量使用DOS,而BIOS更靠近硬件。 例:打印机输出一个字符,可用DOS 21H的功能5或BIOS 17H的功能0。 但有些DOS中断不能提供。如声

12、音控制、某些状态等。调用方法同前,但若需子功能号,还要送AL。,对I/O的 程序请求,IBMDOS.COM,IBMBIO.COM,BIOS,外设,2)调用方法 (1)入口参数送指定寄存器(需要时) (2)功能号送AH (3)INT 21H 结果是出口参数送指定寄存器。 3)基本功能调用 (1)键盘输入(1号调用) 功能:等待从键盘输入一字符。用CTRL-Break( CTRL-C)停止运行,用TAB键,光标移动8个字符位置。不需入口参数。 例:带显示的 MOV AH,01H INT 21H 出口参数:字符的ASCII码在AL中。,例2:不带显示的一字符键盘输入。 MOV AH,07H INT

13、21H (2)打印输出(5号调用) 功能:把DL中的字符输出到打印机上。 例:MOV DL,A MOV AH,5 INT 21H (3)直接控制台输入/输出(6号调用) 功能:从标准输入设备输入字符,或向屏幕上输出字符,但不检查CTRL-Break。,当DL=FFH时,表示从键盘输入 若ZF=0,AL=字符值 ZF=1,无键按下,AL中非字符值 当DL非FFH,向屏幕输出DL中的字符 例:从键盘输入字符。 MOV DL,0FFH MOV AH,6 INT 21H (4)输出字符( 2号调用) 功能:显示一个字符。DL中是字符的ASCII码。 例:MOV DL,A MOV AH,02H INT

14、21H,(5)输出字符串( 9号调用) 功能:显示以DS:DX指向内存中以$结束的字符串。 例:显示:ABCDEFGHIJ DATA SEGMENT BUF DB ABCDEFGHIJ,0DH,0AH,$ DATA ENDS CODE MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF MOV AH,09H INT 21H .,(6)字符串输入(0AH号调用) 功能:从键盘 接收一串字符到输入缓冲区,但应先建立一个缓冲区。 例:BUF DB 100 ;最大长度 DB ? ;保留,输入完填入 DB 100 DUP(?),能保存的数 实际输入数 (返回时填入),回车键,0D,MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF MOV AH,0AH

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号