rev. 一个 - 三月. 19, 1999 11
初步的
TS80C31X2
组装 language
; 块 move 使用 双 数据 pointers
; destroys dptr0, dptr1, 一个 和 psw
; 便条: dps exits opposite 的 entry 状态
; 除非 一个 extra inc auxr1 是 增加
;
00A2 AUXR1 equ 0a2h
;
0000 909000MOV dptr,#source ; 地址 的 源
0003 05A2 INC AUXR1 ; 转变 数据 pointers
0005 90A000 MOV dptr,#dest ; 地址 的 dest
0008 循环:
0008 05A2 INC AUXR1 ; 转变 数据 pointers
000A E0 movx 一个,@dptr ; 得到 一个 字节 从 源
000B A3 INC DPTR ; increment 源 地址
000C 05A2 INC AUXR1 ; 转变 数据 pointers
000E F0 MOVX @dptr,一个 ; 写 这 字节 至 dest
000F A3 INC DPTR ; increment dest 地址
0010 70F6 JNZ 循环 ; 审查 为 0 terminator
0012 05A2 INC AUXR1 ; (optional) restore dps
INC 是 一个 短的 (2 字节) 和 快 (12 clocks) 方法 至 manipulate 这 DPS 位 在 这 AUXR1 sfr. 不管怎样,
便条 那 这 INC 操作指南 做 不 直接地 强迫 这 DPS 位 至 一个 particular 状态, 但是 simply toggles 它.
在 简单的 routines, 此类 作 这 块 move 例子, 仅有的 这 事实 那 DPS 是 toggled 在 这 恰当的 sequence
matters, 不 它的 真实的 值. 在 其它 words, 这 块 move routine 工作 这 一样 whether DPS 是 '0' 或者 '1'
在 entry. 注意到 那 没有 这 last 操作指南 (inc auxr1), 这 routine 将 exit 和 DPS 在 这
opposite 状态.