码迷,mamicode.com
首页 > 编程语言 > 详细

【Updating】汇编语言学习记录02

时间:2020-12-01 11:52:20      阅读:5      评论:0      收藏:0      [点我收藏+]

标签:offset   updating   sum   pre   代码   中断   segment   学习记录   img   

换码指令、字符的输出

前置知识:

  • XLAT 指令:将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给AL,实际相当于(AL) = (DS:(BX+AL))。注意,不是单纯地赋予AL+BX,而是对应地址的值。

    换码指令执行前,一般在主存建立一个字节量表格(如下代码4-6行),内含要转换成的目的代码表格首地址存放于BX,AL存放相对表格首地址的位移量

    换码指令执行后,将AL寄存器内容转换为目的代码

  • 系统功能调用:21号中断,是DOS提供给用户用于调用系统功能的中断,有近百个功能供使用。

    技术图片
  • 字符输出的功能调用:DOS功能调用 INT 21H

    功能号:AH=02H;入口参数:DL=字符的ASCII码;功能:在显示器当前光标位置显示给定的字符,光标右移一个字符位置。

assume cs:codesg, ds:datasg

datasg segment
        ASCII   db 30h,31h,32h,33h,34h,35h
                db 36h,37h,38h,39h	   ;0~9的ASCII码
                db 41h,42h,43h,44h,45h,46h ;A~F的ASCII码
        hex     db 09h                     ;任意设定了一个待转换的一位16进制数,这里以‘0f‘为例
datasg ends

codesg segment
start:
        mov ax, datasg
        mov ds, ax

        mov bx, offset ASCII ;bx存储标号ASCII的偏移地址(将其作为基准值)
        mov al, hex          ;将待转换的16进制数放到低位寄存器
        and al, 0fh          ;按位与,对8位的前4位清0(因为实验只要求输出后4位)
        xlat                 ;换码:al<- DS:[BX+AL] 基准值BX(ASCII的offset)+位移量AL(待转换)
        mov dl, al           ;入口参数:dl<-al
        mov ah, 2            ;02号DOS功能调用
        int 21h              ;显示一个ASCII码字符

        mov ah, 4ch
        int 21h
codesg ends

end start

内存中存储的数据:

技术图片

运行结果:

hex赋值 0fh 09h
运行结果 技术图片 技术图片

【Updating】汇编语言学习记录02

标签:offset   updating   sum   pre   代码   中断   segment   学习记录   img   

原文地址:https://www.cnblogs.com/J-StrawHat/p/14040100.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!