**将存放在首地址为buf、长度为3B的数据联合左移2位。例如,左移前为88 88 88H,左移后应为22 22 20H。** * > 联合移位操作

注:原博客账号密码丢失,故将本科期间的笔记搬运至此

DATAS SEGMENT
    ;此处输入数据段代码
    buf db 88h,88h,88h  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
     ;宏 显示一个字符
dispchar macro char
         mov ah,2
         mov dl,char
         int 21h
         endm
    ;宏定义完成

    ;宏 显示字符串
dispmsg   macro message
          mov ah,9
          lea dx,message
          int 21h
          endm
    ;宏定义完成

    ;宏 显示十六进制数的四位
disphex   macro hexdata
          local disphex1
          push ax
          push bx
          push cx
          push dx
          mov bx,hexdata
          mov cx,0404h
disphex1: rol bx,cl
          mov al,bl
          and al,0fh
          call htoasc
          dispchar al
          dec ch
          jnz disphex1
          pop dx
          pop cx
          pop bx
          pop ax
          endm
    ;宏定义完成

    lea si, buf
    disphex word ptr [si] 
    disphex word ptr [si+2]  
    mov cx, 2
again:
    shl byte ptr[si+2],1
    rcl byte ptr[si+1],1
    rcl byte ptr[si],1
    clc
    loop again


    disphex word ptr [si] 
    disphex word ptr [si+2]   
    MOV AH,4CH
    INT 21H


    ;子程序十六进制转ASCII
 HTOASC proc
        push bx
        mov bx,offset ASCII
        and al,0fh
        xlat ASCII
        pop bx
        ret
ASCII db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
      db 41h,42h,43h,44h,45h,46h
HTOASC  endp    
CODES ENDS
    END START
--------------------- 
作者:D??? 
来源:CSDN 
原文:https://blog.csdn.net/qq_31424383/article/details/53318386 
版权声明:本文为博主原创文章,转载请附上博文链接!
发布了32 篇原创文章 · 获赞 7 · 访问量 7588

猜你喜欢

转载自blog.csdn.net/Isaacddx/article/details/85057500