⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sy95.asm.txt

📁 16进制数转变成acllla
💻 TXT
字号:
data segment
   str db 2 dup (?)  ;定义一个str数组存放每次要输出的16进制数的ASCII码值
data ends
code segment
  assume cs:code,ds:data
start:
      mov ax,data     ;装入数据段段地址
      mov ds,ax
      mov ax,0000h    ;装如附加段的段地址
      mov es,ax
      mov si,0000h    ;置si为每次取出内存0000:0000地址单元数据的指针
      mov bx,0000h    ;置bx为计数寄存器,共要取出100个数
zp:
      inc bx          ;计数器加1,对一个存储单元的数操作开始
      mov al,es:[si]  ;取出一个字节的内容给al  
      mov cl,4        ;置cl 为4,为移位 做准备
      mov dl,al       ;先把al中的数放入dl保存
      and dl,0fh      ;取出低四位
      mov str[1],dl   ;将取出的低四位放入str中保存
      shr al,cl       ;al右移四位
      and al,0fh      ;取出这次操作的存储单元的高四位
      mov str[0],al   ;将高四位放入str,还是本着高高低低的原则
;下面是对取出来字节的对应十进制数值转化成对应16进制数ASCII码的处理并输出
      mov di,offset str
      mov cx,2
l1:
      mov dl,byte ptr [di]
      cmp dl,0ah
      jb next
      add dl,7h
next:
      add dl,30h
      mov byte ptr [di],dl
      mov dl,byte ptr [di] ;求得对应的16进制ASCII码后将其送入dl,直接输出
      mov ah,2          
      int 21h
      inc di               ;修改di的值,将str的偏移地址加1
      loop l1              ;若cx不为0则继续处理
     ;输出空格
      mov ah,2             
      mov dl,20h   ;将空格的ASCII码值送入dl,准备输出   
      int 21h
      mov ax,bx    ;先把bx计数值送入ax保存
      and ax,000fh ;判断bx中的个数是否能被16整除
      jnz l2       ;不能被16整除时则跳转到l2
;下面时输出回车换行,也就是当满足被16整除时输出回车换行
      mov ah,02
      mov dl,13  ;将回车的ASCII 码值送入dl,为输出作准备
      int 21h
      mov ah,02
      mov dl,10 ;将换行的ASCII 码值送入dl,为输出作准备
      int 21h
l2:
      inc si     ;指针si 加1,为处理下个字节数据作准备
      cmp bx,100 ;判断操作数据个数是否到了100个
      jnz zp     ;小于100则继续处理
  ;处理完100个后返回dos 
      mov ah,4ch
      int 21h
code ends
     end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -