微机原理习题答案1234章 联系客服

发布时间 : 星期五 文章微机原理习题答案1234章更新完毕开始阅读f3c20e1f964bcf84b9d57b92

RCR SAR SAR SAR LOOP MOV

AX,1 AX,1 AX,1 AX,1 L1 CX,4 BL,1

L2: SHR

RCR SAR SAR SAR LOOP

DX,1 DX,1 DX,1 DX,1 L2

18. 字变量VAR1中保存有小于38250的16位无符号数,编写程序段实现VAR1÷150,并

进行四舍五入操作,将商保存在字节变量VAR2中。

解:根据题意,38250÷150=255,因此商不会超过255,可以用一个字节表示。

a÷b的四舍五入操作可以通过判断除后余数实现:余数大于等于除数的一半,则商加1;否则不用加1。但这种方法用汇编语言编程实现时比较复杂,这里介绍另外一种方法:设a÷b的四舍五入后的结果为c,用『』表示取整数操作,则

b???a??a?2? c???0.5???b??b???这种方法是在除法操作之前,在被除数上加上除数的一半,这样除法操作后得到的值就是考虑了四舍五入的商。 VAR1

DW 12345

DB ?

DB 150

VAR2

DATAA

MOV AX,VAR1 XOR BX,BX MOV BL,DATAA SHR BX,1

- 16 -

ADD AX,BX DIV DATAA

MOV VAR2,AL

19. 有一组无符号的16位数据保存在BUFFER中,前两个字节存放数据的个数,编程实现

按下式进行滤波处理:

1?x(k)?x(k?1)?x(k?2)?3y(k)?x(k)y(k)?解:滤波结果保存在FILT中。

BUFFER DW 0CH

k?2k?2

DW 33H, 18H, 1BH, 06H, 33H, 08H DW 3H, 6H, 0FH, 51H, 05H, 0CH

LEA SI,BUFFER LEA DI,FILT MOV CX,[SI] MOV [DI],CX ADD SI,2 ADD DI,2 XOR DX,DX MOV AX,[SI] MOV [DI],AX MOV BX,2[SI] MOV 2[DI],BX ADD SI,4 ADD DI,4 DEC CX DEC CX ADD AX,BX

- 17 -

FILT DW 100H DUP(?)

ADC DX,0 MOV BX,3 L1:

ADD AX,[SI] ADC DX,0 PUSH DX PUSH AX DIV BX MOV [DI],AX POP AX POP DX SUB AX, [SI-4] SUBB DX,0 ADD DI,2 ADD SI,2 LOOP L1

20. 在由字符串构成的缓冲区BUFFER中,前2个字节存放字符个数,后续每个字节存放

一个字符的ASCII码。编写程序实现将字符串‘2004’替换成‘2006’。 解:在数据段中定义:

BUFFER DW 74

DB ‘This year is 2004. In 2004, we have a plan for reducing annual expensive 10%’ DEST DB ‘2004’

在代码段中编写程序段:

CLD LEA MOV ADD LEA

L1:

SI, BUFFER CX,[SI] SI,2 DI,DEST

PUSH SI

- 18 -

PUSH DI PUSH

CX

MOV CX,4 REPZ JNZ

SCASB L2

MOV BYTE PTR [SI-1],’6’ POP POP POP INC INC

CX DI SI SI DI

L2:

LOOP L1

21. 定义有下列宏指令:

WAGS MACRO S1,S2,S3

SUB AX,AX MOV DX,AX ADD AX,S1 ADD AX,S2 ADC DX,0 ADD AX,S3 ADC DX,0 ENDM

当采用宏调用指令“WAGS 60000,25000,3000”时,执行后DX= AX= 。 解:宏指令WAGS完成的功能为S1+S2+S3,结果放在DX:AX中。所以,调用“WAGS 60000,25000,3000”时,其结果为

DX=0001H ,AX=57C0H 22. 对上题定义的宏指令,如果采用宏调用指令“WAGS BX,CX,SI”时,写出宏展开形式。 解:调用“WAGS BX,CX,SI”时,宏展开形式:

SUB AX,AX MOV DX,AX

- 19 -

ADD AX,BX ADD AX,CX ADC DX,0 ADD AX,SI ADC DX,0

23. 写出宏指令SUMMING,实现将字节缓冲区array中的内容求校验和(保留低8位),

并保存在VALUE中。

解:设array前两个字节保存缓冲区字节数,在宏指令SUMMING,将array和VALUE作为形式参数。

SUMMING MACRO array,VALUE L1:

LEA

SI,array

MOV CX,[SI] ADD XOR ADD INC LOOP

SI,2 AL,AL AL,[SI] SI L1

MOV VALUE,AL ENDM

- 20 -