一个老师不讲清楚的汇编题,求讲解一下.解决思路

一个老师不讲清楚的汇编题,求讲解一下...
不知道为什么这道题,我老是听不懂老师讲的
  问题1:and al,0fh;为什么相比之后会变成屏蔽高4位...
  问题2:mov ascii+1,al;好像上面只把ascii初始化吧...没定义这么一个ascii+1这个玩意,那ascii+1是什么东西
  问题3:mov cl,4;这是什么?突然蹦出个4,使得我莫名其妙
也许是我汇编能力太差.但是赫玉洁讲的课确实让我学的好吃力...本人是自学的...学汇编不到一个星期...进度还算是快的,不懂的我也问了百度,现在百度答不上来,只能来这寻找个老师,只求以后有问题能够直接联系到可以帮我解答的老师。
  我发的这个贴,不符合侯佩老师讨厌的10种贴的任意一种,所以各位老师解答一下,感谢你八辈子...
dseg segment
  bcd db 86h
  ascii db 2 dup (0)
dseg ends
cseg segment
assume cs:cseg,ds:dseg
 start: mov ax,dseg
  mov ds,ax
  mov al,bcd
  and al,0fh
  add al,30h
  mov ascii+1,al
  mov al,bcd
  mov cl,4
  shr al,cl
  add al,30h
  mov ascii,al
  mov ah,4ch
  int 21h
cseg ends
 end start


------解决方案--------------------
问题1:and al,0fh;为什么相比之后会变成屏蔽高4位...
在and指令之前,AL=86H,and al,0FH之后,AL=06H,为的是后面add al,30H,使之称为AL=36H(数字6的ASCII),为的是存入BCD(数据段里定义的)

问题2:mov ascii+1,al;好像上面只把ascii初始化吧...没定义这么一个ascii+1这个玩意,那ascii+1是什么东西
在数据段里,定义了变量ascii,所以,在代码段里,ascii+1,意思是将al的值存放在偏移地址ascii+1处。

问题3:mov cl,4;这是什么?突然蹦出个4,使得我莫名其妙
shr al,4 是非法的指令。

如果楼主初学的话, 看看王爽的比较合适。
------解决方案--------------------
非法指令指的是该指令的编码非法,不在cpu的指令集中或格式、约束条件不正确。