当前位置:首页 > 微机原理与接口技术复习题1-5(答案)
(2) 设置这串数的长度CX: (COUNT)→CX
(3) 设置这串数的数据首地址BX: OFFSET NUM ? BX
?循环体中应完成:
(4) 把一个数据与和数相加,结果存放在和数寄存器AL 中: AL+ [BX] ?AL (5) 修改数据指针: BX+ 1? BX
?循环结束判断:
(6) 加法结束了吗? (CX-1? CX , CX=0?)
若没有,则循环转向(4); 若已经完成,则转结束处理(7): (7) 结果→SUM 单元; (8) 程序结束。 程序流程图如图5.19 所示。
程序清单如下: DSEG SEGMENT
COUNT EQU 6 ;字节数长度单元
NUM DB 03H, 07H, 11H, 02H, 30H, 19H ;待加字节数(6 个字节)
SUM DB ? ;预留1个字节单元存放结果 DSEG ENDS
CSEG SEGMENT
ASSUME CS: CSEG, DS: DSEG START:MOV AX, DSEG
MOV DS, AX ;数据段初始化
;-----------------请从这里补充代码,完成整个程序-------------------------
XOR AL, AL
MOV BX, OFFSET NUM MOV CX, COUNT
LOP: ADD AL, [BX] INC BX LOOP LOP MOV SUM, AL
;------------------------------------------------------------------------------------
CSEG ENDS END START
16. 编制一个数据块移动程序,要求完成如下任务:
(1)给内存数据段(DATA) 中偏移地址为01 开始的连续32 个字节单元置入数据OOH , 01H , 02H ,?, 1FH 。
(2)将内存数据段(DATA) 中偏移地址为01 的数据传送到偏移地址为n2开始的连续的 内存单元中去。
解答:
(1)分析:这个题目需要对32 个单元进行相同的操作,但是每次参加操作的数据不同。 程序结构: 本程序结构应该选择循环结构。
数据定义: 该程序只需要从n1 开始保留32 个字节单元。每个单元中要置人的数据是有
规律变化的数据,可以在程序中生成。
处理方法: 做好循环初始化工作,在循环次数控制下完成任务。
循环的初始化部分完成:
① 将n1 的偏移地址置入变址寄存器SI( 或者BX , BP , DI 都可以) ,这里的变
址寄存器作地址指针用。
② 待传送数据的起始值OOH 送AL。
③ 循环计数值32( 或20H) 送计数寄存器CX 。
循环体中完成:
③ AL 中内容送地址指针所指单元。
⑤ AL 加1 送AL; 依次得到01H , 02H , 03H ,?, 1FH 。 ⑤ 地址指针加1 ,指向下一个地址单元。
循环结束判断:
⑦计数器 CX-l→CX
⑧若CX≠0 ,继续循环;否则结束循环。
程序流程图如图所示:
汇编语言程序如下:
DSEG SEGMENT
Nl DB 20H DUP(?) DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG START:MOV AX,DSEG
MOV DS,AX ;数据段地址?DS
;-----------------请从这里补充代码,完成整个程序-------------------------
MOV SI, OFFSET N1 MOV AL, 00H MOV CX, 32
LOP: MOV [SI], AL INC AL INC SI DEC CX JNZ LOP
;------------------------------------------------------------------------------------
CSEG ENDS END START
(2)分析: 这个问题是数据块移动问题。
程序结构: 可选择循环结构或串传送指令来处理,如选择串传送指令(MOVSB指令)。
数据定义: 要定义源串和目的串。源串是如(1)中所设置的数据,目的串要保留相应长
度的空间。源串的数据的置入可使用loop循环来完成。
处理方法: MOVSB 指令是字节传送指令。它要求事先将摞串的首偏移地址送S1 ,
段地址为DS ,目的串的首偏移地址送DI ,段地址为ES ,串长度送CX 寄存器中,并设置方向标志DF 。
编写程序: 根据数据定义和处理方法编写摞程序C 汇编语言源程序清单如下:
DSEG SEGMENT
N1 DB 20H DUP(?) ;源数据串区域定义。 N2 DB 20H DUP(?) ;目的数据串区域定义。 DSEG ENDS . ,
CSEG SEGMENT
ASSUME CS: CSEG , DS:DSEG, ES:DSEG START: MOV BX, DSEG
MOV DS,BX ;源数据区域的段地址?DS MOV ES,BX ;目的数据区域的段地址→ES
;--------在源数据区N1中置入从00H开始的32 个字节数据------------
MOV SI, OFFSET N1 MOV AL, 00H MOV CX, 32
LOP: MOV [SI], AL
INC SI INC AL LOOP LOP
;------------将源数据区N1的数据传送到目的数据区N2去------------- MOV SI, OFFSET N1 MOV DI, OFFSET N2 CLD MOV CX, 32 REP MOVSB
;------------------------------------------------------------------------------ CSEG ENDS END START
17. 给定符号函数
1, X > 0 Y= 0, X = 0 -1, X < 0
设任意给定的X存放在DATAX 单元,计算出函数Y值,要求存放在DATAY 单元中。
解答:
共分享92篇相关文档