当前位置:首页 > 微机原理课后习题及答案
第四章
4-1 用伪指令将下列常数依次定义在1600H为首地址的程序存储器中。
0,1,4,9,16,25,36,49,64,81
答:ORG 1600H
DB 0,1,4,9,16,25,36,49,64,81
4-2 用伪指令将下列常数依次定义在1700H为首地址的程序存储器中,要求数据类型一致。
0,1,8,27,64,125,216,343,512,729
答:提示:因为343,512,729为双字节数据(>255),所以所有数据均应以双字节存入。 ORG 1700H
DW 0,1,8,27,64,125,216,343,512,729
4-3 用伪指令将字节型变量X1、X2定义在内部数据存储器30H、31H单元中,将字节型变量Y1、Y2定义在外部数据存储器2000H、2001H单元中。 答: X1
DATA 30H
X2 DATA 31H Y1 XDATA 2000H Y2 XDATA 2001H
21
4-4 用伪指令将ASCII码字符串“Beijing,tjjtds!”定义在1200H为首地址的程序存储器中。 答: ORG 1200H DB ‘Beijing,tjjtds!’
4-5 用伪指令将逻辑变量A1、A2定义在00H、01H位单元中 答: A1 A2 BIT 01H
4-6 编一程序段,将1400H为首地址的外部数据存储器中200个单字节数据转移至1500H为首地址的外部数据存储器中。
MOV DPTR, #1400H ;用DRTR指向源数据块单元地址 MOV P2, #15H MOV R0, #00H MOV R7, #200
;数据个数送入R7 ;用P2,R0指向目标地址
BIT 00H
LOOP: MOVX A, @DPTR
MOVX @R0, A INC INC
DPTR R0
;修改源数据块指针 ;修改目标单元地址指针
DJNZ R7, LOOP SJMP $
22
4-7 编一程序段,将30H为首地址的内部数据存储器中20个单字节补码数据中的负数传送至2400H为首地址的外部数据存储器中。
MOV R0, #30H
;用R0指向源数据块首地址
MOV DPTR, #2400H ;用DRTR指向目标区首地址
MOV R7, #20
;数据个数送入R7 ;取出源数据
;若源数据最高位=0,则表示数据
LOOP: MOV A, @R0 JNB
ACC.7, NEXT
为非负数,无需传送,可直接取下个数据 MOVX @DPTR, A 时修改DPTR INC
DPTR R0
;若取出的数据为负数,则传送到外部RAM,同
NEXT: INC
DJNZ R7, LOOP SJMP $
4-8 编一程序段,将40H为首地址的内部数据存储器中25个单字节数据,依次下移一个单元。
提示:根据题意即将40H~58H中的数据依次送入41H~59H中 XCH
A, 40H
;ACC内容送入40H暂存保护,同时取出40H单
元中内容
MOV R0, #41H ;R0指向目标单元首地址
23
MOV R7, #25
;数据长度送R7
;前一个单元数送后一个单元,同时取
LOOP: XCH A, @R0
出后一个单元原先的数据暂存入ACC INC
R0
DJNZ R7, LOOP MOV A, 40H
;恢复ACC原来的内容
STOP: SJMP STOP
4-9 编一程序段,完成函数y=x2+5x+6的计算。设0≤x≤10。 提示:据题意6≤y≤156,即结果为单字节数据。
X DATA 30H Y DATA 31H MOV A, X MOV B, X MUL AB MOV Y, A MOV A, X MOV B, #5 MUL AB ADD A, Y
; X2+5X → ACC ;X2→Y
ADD A, #6 ; X2+5X+6 → ACC MOV Y, A
; X2+5X+6 → Y
24
共分享92篇相关文档