计算公式: 物理地址=16d*(DS)+(BX)+(SI)+8位位移量
或+(DI) 或 16位位偏移量
物理地址=16d*(SS)+(BP)+(SI)+8位位移量
或+(DI) 或 16位位偏移量
---------------------------------------------------------------------
呵呵,终于写完了这篇教程,好累哦!! 是不是觉得我的思维很另类呀,要创新呀!
书上太理论了,我就创新一个,不知道你们看得懂吗?
呵呵,反正你们不要!@##)(#$*!@(@我就行了,我很努力写了!!!
下面,我举个程序例子,让你们加深印象!!!
----------------------------------------------------------------------
编程步骤:
1: 建立缓冲区,为输入字符串(最多能输入9个)
2: 取缓冲区的首地址,以便后面进行"寄存器间接寻址方式"
3: 利用"寄存器间接寻址方式"取得实际输入字符个数,以便确认循环次数
4: 利用"寄存器间接寻址方式"输入字符串的最后一个字符
5: 利用LOOP指令和2号显示功能来进行倒着显示
----------------------------------------------------------------------
;程序功能:任意输入几个字符(最多能输入9个),按回车则倒着输出!
data segment
user_string db 10,0,10 dup(?)
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
lea dx,user_string ;建立输入字符串缓冲区
mov ah,0ah
int 21h
xor si,si
xor bx,bx
mov bx,dx
mov cx,[bx+si+1] ;看这个就是"寄存器间接寻址方式"
xor ch,ch ;其目的就是取实际输入字符个数
mov di,cx
lop: mov ah,2
mov dx,[bx+di+1];看这又是"寄存器间接寻址方式"
int 21h ;其目的就是取输入字符串的最后一个字符
dec di
loop lop ;依次循环倒着输出字符
mov ah,4ch
int 21h
code ends
end start