一个月前学过好些都忘了,做点备忘
-----------------------------------------------------------------------------------------
(1)
BP的默认段寄存器与BX、SI、DI不同,使用SS。除非显式指定使用DS。
BP可以用来暂存SP(13.3)
jump:
push bp
mov bp,sp
dec cx
jcxz jprt
add [bp+2],bx
jprt:
pop bp
iret
jumpend:nop
(2)
mov指令的形式有5种:
mov 寄存器,数据
mov 寄存器,寄存器
mov 寄存器,内存单元
mov 内存单元,寄存器
mov 段寄存器,寄存器
(3)
masm报错:error A2048: must be index or base register
使用寄存器间接寻址时,只可以使用 BX, BP, SI, DI 这四个寄存器中的一个
错误: add [sp+2],bx
(4)
int10h: BIOS提供,包含多个和屏幕输出有关的子程序
int21h: DOS提供
调用int 10h中断例程前:
mov ah,9 ;子程序 2-置光标 9-光标处显示字符
mov al,'a' ;字符
mov bl,7 ;颜色属性
mov bh,0 ;第0页
mov cx,3 字符重复个数
颜色属性格式:
7 6 5 4 3 2 1 0
BL R G B I R G B
闪烁 背景 高亮 前景
-----------------------------------------------------------------------------------------
实验七
笔记: es:[di+10]写成es:[di+10h]
实验十二
笔记: 安装程序(传递一段数据)
mov cx,offset do0end-offset do0 ;cx存程序长度
cld ;设定DF为0,方向为正
rep movsb ;cx为0时停止
;movsb通过SI和DI这两个寄存器控制字符串的源地址和目标地址,比如DS:SI这段地址的N个字节复制到ES:DI指向的地址
实验十三(3)
最后一空: add bx,2
为什么前面 mov bh,0改变了bx后不需要重新赋值
据论坛上某人说,此实验中mov bx,offset s 后ah= 0,而且偏移地址不超过256,不会影响到ah。