微型计算机第三,四章课后答案和题目!很全面

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

微型计算机第三,四章课后答案和题目!很全面
3.53 在以DS:3301H为首地址的存储单元中,连续存放了50个无符号的字节数据,要求在其中找出最小值,并将它放在地址为DS:3300H的字节单元中。

试编写程序。

解:CODE SEGMENT
ASSUME CS:CODE
START: MOV SI,3301H ;将首地址送给SI,用SI可以间接访问数组中的元素
MOV AL,[SI] ;将第一个数送给AL
MOV CX,49 ;50个数比较49次
CYCLE: INC SI ;让SI指向下一个数
CMP AL,[SI]
JBE NEXT ;AL<=[SI],则判断下一个数
MOV AL,[SI] ;AL>[SI],则用[SI]取代AL
NEXT: LOOP CYCLE
MOV DS:[3300H],AL ;编译器会认为[3300H]就是3300H,故在前面加DS:
MOV AH,4CH
INT 21H
CODE ENDS
END START
3.54 有100个字节的数据,连续存放在以DS:1100H的首地址的存储单元中,要求将其全部传送到以ES:2100H为首地址的单元中。

试用三种方法编写程序:
(1)不使用串操作指令。

(2)使用不带重复前缀的串操作指令。

(3)使用带重复前缀的串操作指令。

解:
3.57 有如下程序
CLD
LEA DI,[0202H]
MOV CX,100H
XOR AX,AX
REP STOSW
试分析此程序段的功能。

解:CLD 设置方向。

LEA DI,[0202H] 把0202H给DI。

MOV CX,100H CX = 100.重复次数
XOR AX,AX AX = 0;
REP STOSW 串操作。

把AX的值赋值到SI:[DI]。

然后DI加2.重复100次。

用两个0,填充自内存单元ES:0126H 开始的100个字单元。

3.59 试编写程序,统计以DS:8000H为起始地址的连续200个字节单元中的0的个数。

解:CODE SEGMENT
ASSUME CS:CODE
START: MOV AX,0 ;用AX统计0的个数
MOV CX,200 ;循环200次
MOV SI,8000H ;通过SI间接访问内存DS:8000H开始的存储单元CYCLE: CMP BYTE PTR [SI],0
JNZ NEXT
INC AX
NEXT: INC SI
LOOP CYCLE
MOV AH,4CH
INT 21H
CODE ENDS
END START
4.3 什么是指示性语句?它与指令性语句有何区别?
解:(1)指令性语句指令性语句是主要由指令构成的语句,其格式
为:[标号:]操作码[操
作数][;注释]
例如:LOP:ADD AL,[BX] 注意:标号(这里是LOP)必须用“:”结尾。

(2)指示性语句指示性语句主要是由命令(亦称为伪指令)构成的指令,是用来只是汇编程序进行汇编操作的,其格式为:[名字/变量]命令参数[;注释]
4.4 画出下列语句中的数据在存储器中的存储情况。

ARRAYB DB 12,34H,”ABCD”,2 DUP(?,2)
ARRAYW DW 1234H,”AB”,”CD”,?,2 DUP(?,2)
解:
ARRAYW 34H ARRAYW+10 02H
ARRYAW+1 12H ARRAYW+11 00H
ARRAYW+2 42H ARRAYW+12 ?
ARRAYW+3 41H ARRAYW+13 ?
ARRAYW+4 44H ARRAYW+14 02H
ARRAYW+5 43H ARRAYW+15 00H
ARRAYW+6 ?
ARRAYW+7 ?
ARRAYW+8 ?
ARRAYW+9 ?
4.5程序中数据定义如下:
DATA1 DW ?
DATA2 DB 32 DUP(?)
DATA3 DD ?
DLENGTH EQU $-DATAI
试问DLENGTH的值是多少?
解:DATA1占2个字节,DATA2占32个字节,DATA3占4个字节。

DLENGTH=当前地址-DATA1的地址,也等于DATA1,DATA2,
DATA3的地址总和。

即:DLENGTH=38
4.6 在某程序中需要为一个变量BUF预留500个字节的存储空间,请写出相应的指令,如果预留500个字节的存储空间呢?
解:BUF DB 500 DUP(?)
BUF DW 500 DUP(?)
4.7 程序中数据定义如下:
BUFFERB DB ‘ABCDEF’
RESULT DB ?
BUFFERW DW 30 DUP(?)
写出以下指令的执行结果:
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。

相关文档
最新文档