第6章汇编语言程序设计讲述.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章汇编语言程序设计讲述

下面讨论利用软件实现不同码之间的转换。 1. 十六进制到ASCII 例4-5若有一个二进制数码串,要把每一个字节中的二进制转换为两位十六进制数的ASCII码,高4位的ASCII码放在地址高的单元。串中的第一个字节为串的长度(小于128)。 能实现这样转换的流程如图4-8所示。 6.5.5 码转换程序设计 输入输出设备以ASCII码表示字符,数通常是用十进制数来表示,而机器内部以二进制表示。所以,在CPU与I/O设备之间必须要进行码的转换。实现码转换的方法有: (1) 对于有些转换,利用CPU的算术和逻辑运算指令很容易实现,故可用软件实现转换; (2) 某些更为复杂的转换,可以用查表来实现,但要求占用较大的内存空间; (3) 对于某些转换,用硬件也是容易实现的,如BCD到七段显示之间转换的译码器等。 name hex_change_to_ascii data segment l1 dw 2 string db 34h,98h l2 dw ? buffer db 2*2 dup(?) data ends stack segment para stack′stack′ db 100 dup(?) stack ends code segment assumecs:code,ds:data, es:data,ss:stack start proc far begin: push ds mov ax,0 push ax mov ax,data mov ds,ax mov es,ax mov cx,l1 lea bx,string lea si,buffer mov ax,cx sal cx,1 mov l2,cx mov cx,ax again: mov al,[bx] mov dl,al and al,0fh call change mov al,dl push cx mov cl,4 shr al,cl pop cx call change inc bx loop again ret start endp change proc cmp al,10 jl add_0 add al,′a′-′0′-10 add_0: add al,′0′ mov [si],al inc si ret change endp code ends end begin 6.6.6 有关I/O的DOS功能调用 为了在程序运行过程中了解运行的情况,应该设法把结果在显示器CRT上显示出来。要在程序中显示结果,方便的方法是调用操作系统中的I/O子程序。操作系统的核心是由许多有关I/O驱动、磁盘读写以及文件管理等子程序构成。这些子程序都编了号,可由汇编语言的源程序调用。在调用时,把子程序的号(或称系统功能调用号)送至AH,把子程序规定的入口参数,送至指定的寄存器,然后由中断指令INT 21H来实现调用。在这里通过几个程序例子介绍少量的有关I/O的功能调用,便于读者在程序中使用。 1. 在CRT上连续输出字符0~9 DOS的功能调用2就是向CRT输出一个字符的子程序,它要求把要输出的字符的ASCII码送至寄存器DL。即: MOV DL,OUTPUT_CHAR MOV AH,2 INT 21H 为了使输出的字符之间有间隔,在每一循环中,输出一个0~9的字符和一个空格。要输出0~9,只要使一个寄存器(程序中为BL)的初值为0,每循环一次使其增量,为了保证是十进制数,增量后要用DAA指令调整,为了保证始终是一位十进制数,用AND 0FH指令屏蔽掉高4位。其流程如图4-10所示。 相应的程序为: name output_char_0_9 stack segment para stack′stack′ db 100 dup(?) stack ends code segment assume cs: code,ss: stack start proc far begin: push ds mov ax,0 push ax mov bl,0 push bx goon: mov d1,20h;把空格字符→DL mov ah,

文档评论(0)

441113422 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档