练习一:

   t1.asm具体内容:

assume cs:code
code segment
	mov ah,2
	mov dl,3
	add dl,30h
	int 21h
	mov ah,2
	mov dl,6
	add dl,30h
	int 21h
	mov ah,4ch
	int 21h
code ends
end

  运行效果:

  

  将mov dl,3改为mov dl,4       mov dl,6改为mov dl,9

  运行结果变为49;

  debug调试t1.exe:

  

  cx的值是0016,寄存器ds和寄存器cs满足(cs)=(ds)+10h

  PSP的头两个字节是CD 20;

  

  u命令对t1.exe反汇编;

  

  单步执行:

  

  

  

  后查询后知  mov ah,2 ,int 21h 输出的是ascii码,为了输出想要的数字,所以dl加30h。

练习二:

  t2.asm源码:

assume cs:code
code segment
	mov ax,0b800h
	mov ds,ax
	mov bx,0
	mov [bx],0133h
	add bx,2
	mov [bx],0136h
	mov ax,4c00h
	int 21h
code ends
end

  运行结果:

  

  (1)左上角果真出现数字红色36

  (2)左上角数字变为红色29

  (3)左上角数字变为浅蓝色36

  

延伸思考

  要输出的字符与寄存器中的字符相差30h,输出字符可以通过寄存器,也可以通过段地址。

  现在大体可以猜到,输出的字符颜色与高字节有关。但是至于为什么,有什么样的关系还不知道,对于汇编如何输入字符到屏幕上还是不清楚。

 

posted on 2018-11-14 18:02  AHrui  阅读(121)  评论(0编辑  收藏  举报