微机原理第四章

  • 格式:docx
  • 大小:19.13 KB
  • 文档页数:9

下载文档原格式

  / 9
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章

课后习题

4.3 什么是指示性语句,它和指令有什么区别

指示性语言是指与CPU的指令直接对应的助记符

而指令是有汇编开发系统识别和处理的助记符前者是不被汇编开发系统处理的助记符.

4.4 画出下列语句的数据在存储器中的存储情况ARRAYB DB 12,34H,’ABCD’,2, DUP(?,2)

ARRAYB DW 1234H,’AB’,’CD’,?,2 DUP(?,2)

4.5 求DLENGTH的值是多少

DATA1DW?

DATA2DB32DUP(?)

DATA3DD?

DLENGTH EQU$-DATA1

解:DLENGTH=38=26H

4.6在某程序中需要为一个变量BUF预留500个字节的存储空间,请写出相应的指令,如果要预留500个字的存储空间呢?

解:

DATA1 DB 500 DUP(?)

ADTA2 DW 500 DUP(?)

4.7程序定义如下

BUFFERB DB‘ABCDEF’

RESULT DB?

BUFFERW DW30DUP(?)

写出运行结果:

MOV AX,TYPE RESULT;AX=1

MOV BX,TYPE BUFFERW;BX=2

MOV CX,LENGTH BUFFERB;CX=1

MOV DX,LENGTH BUFFERW;DX=30

MOV AX,SIZE RESULT;AX=1

MOV BX,SIZE BUFFERW;BX=60

4.9

LENG表示符号值等于2

4.11

设BX=1103H,则执行下列指令后AX和CX各为多少?若BX=03H,则结果又如何?

MOV AX,BX AND0FFH

MOV CX,BX EQ1103H

解:

BX=1103H

AX=0003H,CX=0FFFFH

BX=03H

AX=0003H,CX=0

4.12

MOV AX,X

SBB A,Y

MOV BX,10

IDIV BX

MOVBX,4

MUL BX

MOV Z,AX

4.14

XOR BX,BX

MOV CX,10

LOP:MOV AH,01H

INT21H

SUB AL,30H

MOV DL,AL

MOV AX,BX

ADD AL,DL

AAA

MOV BX,AX

LOOP LOP

4.17

4. 13. 设A,B是长度为10的字节数组,用串操作指令编写程序实现AB两数组内容的相互交换,试完善本程序。

DATA SEGMENT

A DB1,2,3,4,5,6,7,8,9,0AH

DRG OO10H

B DB 0AH,9,8,7,6,5,4,3,2,1

DATA ENDS

LEA SI,A

LEA DO,B

MOV CX,10

LOP:LODSB

XCHG AL,[DI]

DEC DI

STOSB

INC DI

LOOP LOP

解:

XCHG SI, DI

XCHG SI, D

4.18

将内存中某数据块的正数和负数分开,并分别将这些正数和负数送同一数据段的两个缓冲区中,并在屏幕上显示正数和负数的个数。

DATA SEGMENT

BUF DB 12,15,-2,3,-7,-8,19,-25

N=$-BUF

BUF1 DB N DUP(?) ;存放正数

BUF2 DB N DUP(?) ;存放负数

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA BX,BUF ;BX指向BUF

LEA SI,BUF1 ;SI指向存放正数的缓冲区BUF1

LEA DI,BUF2 ;DI指向存放负数的缓冲区BUF2

MOV CX,N ;循环N次

MOV DX,0 ;DH表示负数的个数,DL表示正数的个数,都清零 CYCLE: MOV AL,[BX] ;将BX指向的数送给AL

CMP AL,0 ;比较AL与0的大小

JG GREAT ;AL>0,则转移至GREAT

MOV [DI],AL ;AL<=0,将AL存入负数的数组

INC DH ;负数的个数加1

INC DI ;DI指向下一个负数

JMP NEXT

GREAT: MOV [SI],AL ;AL>0,将AL存入正数的数组

INC DL ;正数的个数加1

INC SI ;SI指向下一个负数

NEXT: INC BX ;判断下一个数

LOOP CYCLE

ADD DL,30H ;将正数的个数变成字符输出

MOV AH,2

INT 21H

ADD DH,30H ;将负数的个数变成字符输出

MOV DL,DH

MOV AH,2

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

相关主题