当前位置:文档之家› 微机原理第四章

微机原理第四章

微机原理第四章
微机原理第四章

第四章

课后习题

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

END START

4.20

现有一子程序:

SUB1PROC

TEST AL,80H

JE PLUS

TEST BL,80H

JNE EXITO

JMP XCHANGE

PLUS:TEST BL,80H

JE EITO

XCHANGE:XCHG AL,BL

EWITO:RET

SUB1ENDP

试回答:

(1)子程序的功能是什么?

(2)如调用子程序前AL=9AH,BL=77H,那么返回主程序时,AL=?BL=?解:

(1) 测试AL, BL两数的符号,如为同号直接返回,如为异号,则AL与BL交换

(2) AL=77H, BL=9AH

4.21

作用

1、DOS键盘功能调用

2、DOS显示功能调用

3、DOS打印功能

4、DOS串行口通信功能调用

区别

bios是主板预装好的input、output系统,而dos是需要安装才能使用操作系统。用int条用中断以后可以通过不同的系统达到不同的目的和效果。其中int 1 -20 是bios中断,int21 专门用于dos 中断

4.24

ATA SEGMENT

NUMBER DB ?;存放统计数据,在程序退出以前可以在此看到统计数据,若对程序才算对

STR1 DB 'ASDAASZXCFGRSAAXADRRAT$';可以自己随便定义,注意以$结尾

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA;给数据段赋值

MOV DS,AX

LEA SI,STR1;字符串首地址

MOV BL,0;存放统计个数的寄存器赋初值LOOP1:

MOV CL,[SI];取数据

INC SI

CMP CL,'$';看是否是结尾

JE EXIT ;是,退出

CMP CL,'A' ;不是结尾,比较是否是‘A’

JNE NEXT ;不是'A'比较下一个

INC BL ;是,统计数加1

next: JMP LOOP1

EXIT:MOV NUMBER,BL;将统计数送往存储区

相关主题
文本预览
相关文档 最新文档