1、将数01~33依次写入到片内RAM35H~55H单元中,在将片内RAM35H~55H单元中的内容最高位置1送到以3000H为首地址的存储区中。 2、用汇编语言设计一个10ms的精确定时。(用双重循环实现)
时间: 2024-02-22 09:58:19 浏览: 224
好的,我明白了。以下是我的回答:
1、将数01~33依次写入到片内RAM35H~55H单元中,在将片内RAM35H~55H单元中的内容最高位置1送到以3000H为首地址的存储区中。
```
ORG 0000H
MOV DPTR, #0035H ; 将DPTR寄存器设置为RAM35H地址
MOV R0, #01H ; R0为计数器,初始值为1
LOOP:
MOV A, R0 ; 将计数器的值赋值给累加器A
MOVX @DPTR, A ; 将累加器A的值写入DPTR指向的RAM单元中
INC DPTR ; 将DPTR指向下一个RAM单元
INC R0 ; 将计数器加1
CJNE R0, #34, LOOP ; 如果计数器的值不等于34,则跳转到LOOP标签处
; 现在RAM35H~55H单元中的内容已经写入完成,接下来将它们的最高位设为1
MOV DPTR, #0035H ; 将DPTR寄存器重新设置为RAM35H地址
MOV R0, #0 ; R0为计数器,初始值为0
LOOP2:
MOVX A, @DPTR ; 将DPTR指向的RAM单元中的值读入累加器A
ORL A, #80H ; 将累加器A的最高位设为1
MOVX @R0+3000H, A ; 将累加器A的值写入以3000H为首地址的存储区中,同时R0寄存器加1
INC DPTR ; 将DPTR指向下一个RAM单元
CJNE R0, #33, LOOP2 ; 如果计数器的值不等于33,则跳转到LOOP2标签处
END
```
2、用汇编语言设计一个10ms的精确定时。(用双重循环实现)
```
ORG 0000H
MOV R0, #0 ; R0为计数器,初始值为0
MOV R1, #0 ; R1为计数器,初始值为0
DELAY:
MOV R0, #0 ; 将计数器R0的值设置为0
INNER:
MOV R1, #0 ; 将计数器R1的值设置为0
DJNZ R1, $ ; 将计数器R1减1,如果不为0,则跳转到$标签处
DJNZ R0, INNER ; 将计数器R0减1,如果不为0,则跳转到INNER标签处
DJNZ R2, DELAY ; 将计数器R2减1,如果不为0,则跳转到DELAY标签处
END
```
以上是我的回答,希望能对您有所帮助。
阅读全文