请分析这道8086汇编语言程序

题目:将寄存器AL中高、低4位交换。
程序如下:
CODE SEGMENT
ASSUME CS:CODE
START:MOV AL,0ABH
MOV CL,4
ROL AL,CL
MOV AX,4C00H
INT 21H
CODE ENDS
END START

请写出程序的每一行是什么意思,出现什么结果。最后写出程序结束后的运行结果。要详细点哦。
CODE SEGMENT ;;代码含腔段开始
ASSUME CS:CODE ;;代码段祥老闹地址和CS段寄存器关联
START:MOV AL,0ABH ;;START是一个标签, 将操作数0ABH 放在寄存器AL中
MOV CL,4 ;;将4放在寄存器CL中
ROL AL,CL ;;将AL中的数循谨罩环左移4位 左移的位数时根据cl的值来决定
MOV AX,4C00H ;;21号中断的4c号功能用于退出程序返回执行权给操作系统
INT 21H ;;调用中断21h, 退出程序 不写这个你的程序运行后dos就会死住无法继续操作
CODE ENDS
END START
CODE SEGMENT ;段开始标志

ASSUME CS:CODE ;用ASSUME将CS与该CODE段关联起来

START: ;程序入口标志

MOV AL,0ABH ;对将数据放入寄存器AX中,(AX)=0ABH

MOV CL,4 ;对将数据放入寄存器CX中,(CX)=4

ROL AL,CL ;对AL的8位数据进行向右察核烂的循环左移,一共移动4位(也就是CX的值)。所谓循环右移1位,就是将最低位的0或1放到最高位,其他位向右移动1位。这样移动4位之后,AL中的低四位数据就跑到高四位了,而高四位数据跑到低四位了。

MOV AX,4C00H ;剩下两句氏拍是用来终败漏止程序用的
INT 21H

CODE ENDS ;段结束标志

END START ;程序结束标志
好基础啊, 好基础.

CODE SEGMENT ;;代码段开始
ASSUME CS:CODE ;;代码段地址
START:MOV AL,0ABH ;;START是伏陪纳一个标签, 取操作数0ABH 放在寄存器AL中
MOV CL,4 ;;将4放在寄存器CL中
ROL AL,CL ;;将AL中的数循环左移CL位(4位), 完成高低4位互换
MOV AX,4C00H ;;4C00 -> AX
INT 21H ;;调用中断21h, 退出程序
CODE ENDS
END START

最终执行完...就缺没是在CPU中换了下高低乱迟位, 什么也没有输出. over.
start: al=0xab
cl=4
al循环左移4位后al=0xba
ax=0x4c00
运行唤告中断21(悄链橡程启旁序 返回)