微机原理与接口技术4-8习题解答王玉良.doc
文本预览下载声明
4.1 试编一程序,把地址偏移量为100H单元开始的256个单元分别写入00H,01 H,02H,03H,…,FFH数据。
4.1解:源程序如下
DATA SEGMENT
ORG 100H
BUFl DB 256 DUP(?)
COUNT EQU$-BUFl
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUFl
MOV CX,COUNT
XOR AL,AL
NEXT: MOV[SI],AL
INC AL
INC SI
LOOP NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START
4.2 统计上题写入的数据块中0元素、正元素、负元素的个数,并分别把统计结果送人上述数据块之后的三个单元中。
4.2解:
DATA SEGMENT
ORG 100H
BUFl DB 00H,01H,02H,……,FEH,FFH;共256个数据
COUNT EQU$-BUFl
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUFl
MOC CX,COUNT
XOR BX,BX ;BL与BH分别存放正、负元素的个数
XOR DH,DH ;DH寄存器存放O元素个数
NEXT2: MOV AL,[SI]
CMP AL,0
JZ ZERO ;若ZF=1,则为O,转至ZERO,DH+1
JS NEGAT ;若SF=0 则为负数,BH+1
JMP PLUS ;既不是O又不是负,则为正数,BL+1
ZERO: INC DH ;O的个数加1
JMP NEXT3
NEGAT: INC BH ;负数个数加1
JMP NEXT3
PLUS: INC BL ;正数个数加1
NEXT3: INC SI ;修改地址指针SI
LOOP NEXT2 ;未完,继续循环
MOV[SI],DH ;存人O元素个数统计结果
INC SI
MOV[SI],BX ;存人正、负数个数统计结果
MOV AH,4CH
INT 21H
CODE ENDS
END START
4.3 用DOS功能调用显示上面两题中数据块各单元(包括统计结果)内容。为了显示清晰明了,要求每行显示16个数据,两个数据之间用空格分开。
4.3解:把上述三题4.1,4.2,4.3结合起来综合编程如下:
DATA SEGMENT
ORG 100H ;数据块在段中的偏移地址为100H
BUFl DB 259 DUP(?) ;256个单元存放数据,3个单元存放结果
COUNT EQU$-BUFl ;数据块长度为COUNT
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUFl
MOV CX,COUNT-3 ;数据块为256个单元(259-3)
XOR AL,AL ;AL清O
NEXT1:MOV[SI],AL ;存人数据00H,01H,…,FFH
INC AL
INC SI
LOO
显示全部