微机原理与接口技术1-8习题解答王玉良 下载本文

DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET STRG1 MOV DI,OFFSET STRG2 MOV CX,COUNT CLD

REP MOVSB MOV AH,4CH INT 21 H

CODE ENDS

5.寄存器SI做地址指针,自SI所指的内存单元开始连续存放三个无符号数(以字为单位),编一程序求它们的和,并将结果存放在这三个数之后的单元中。

解 DATA BUF

SEGMENT

DW XXH,YYH,ZZH

END START

SUM DW ?,? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET BUF MOV DI,OFFSET SUM MOV AX,[SI]

ADD AX,[SI+2] MOV [DI],AX MOV AX,0 ADDC AX,0 MOV [DI+2],AX MOV AX,[DI] ADDC AX,[SI+4] MOV [DI],AX

MOV AX,0 ADDC AX,[DI+2] MOV [DI+2],AX MOV AH,4CH INT 21H CODE ENDS

END START

6.读下面程序段,问:在什么情况下本段程序的执行结果是AH=0? START:IN AL,5FH

MOV AH,0 JZ BRCH MOV AH,0 JMP STOP BRCH: MOV AH,0FFH STOP: INT 20H

解 当标志寄存器的ZF=0时,执行结果AH=0。(JZ之前的两条指令对零标志没有影响)

7.下面语句在存储器中分别为变量分配多少字节? 0NE

DW 10

TW0 DW 4 DUP(?),5 THREE DB 2 DUP(?,8 DUP(0)) COUNT

EQU 10

FOUR DD COUNT DUP(?) FIVE 解

ONE DW 10

;为ONE分配2个字节 ;为TWO分配10个字节

DB ‘HOW ARE YOU?’

TWO DW 4 DUP(?),5

THREE DB 2 DUP(?,8 DUP(0)) ;为THREE分配18个字节 COUNT

EQU 10

;不给COUNT分配存储单元

FOUR DD COUNT DUP(?) ;为FOUR分配40个字节 FIVE

8.数据定义语句如下所示: FIRST DB 90H,5FH,6EH,69H SECOND DB 5 DUP(?) THIRD DB 5 DUP(?) FORTH DB DUP(?)

自FIRST单元开始存放的是一个四字节的十六进制数(低位字节在前),要求: (1)编一段程序将这个数左移两位后存放到自SECOND开始的单元(注意保留移出部分);

(2)编一段程序将这个数右移两位后存放到自THIRD开始的单元(注意保留移出部分); (3)编一段程序将这个数求补后存放到自FORTH开始的单元。 解

DATA SEGMENT FIRST

DB 90H,5FH,6EH,69H

DB ‘HOW ARE YOU?’ ;为FIVE分配12个字节

SECOND DB 5 DUP (?) THIRD DB 5 DUP (?) FORTH DB

DUP (?)

DATA ENDS