微机原理复习题(教师版) 联系客服

发布时间 : 星期一 文章微机原理复习题(教师版)更新完毕开始阅读565e4a0833687e21af45a964

JNE NEXT MOV SUM,AX MOV AH,4CH INT 21H CODE ENDS

END START

3、统计AX寄存器中二进制位为1的个数,并将统计结果存放于字节变量result中。【提示:循环16次,每次循环将AX内容逻辑右移1次,移出的值在CF中,再用ADC DL,0语句累加CF,结果保存在DL中】

MOV AX,0005H

MOV BX,0 MOV CX,10H NEXT:

SHR AX, 1

JNB NNNN ;CF为0转移. INC BX ;CF为1则加一. NNNN:

LOOP NEXT MOV CX, BX HLT END

4、在dbuf单元中有10个有符号字节数,试编写一个完整的程序,实现统计dbuf数据区中正数、负数和零的个数,并分别存放于字节变量d1和d2和d3中。 【提示:】 CON1:

?? ADD AL, 0 JZ LING JNS ZHENGSHU

; 累加负数个数 ; 累加正数个数 ; 累加零的个数 ; 循环

JMP NEXT JMP NEXT

FUSHU: ?? ZHENGSHU: ??

LING: ??

NEXT: ?? ; 调整指针

LOOP CON1

??

D segment

DBUF db 1,20h,-30,47h,-5h,-66,77,-32,-9,-99 ZHENGSHU DB 0 FUSHU DB 0 LING DB 0 D ends CC segment

ASSUME CS:CC,DS:D BG:mov ax,D mov ds,ax

mov cx,10 mov si,0 again: cmp DBUF[si],0 JZ L JG ZS INC FUSHU jmp last

ZS:inc ZHENGSHU jmp last L:INC LING last:inc si loop again

MOV AL,ZHENGSHU MOV BL,FUSHU mov ah,4Ch int 21h CC ends end BG

5、编程一个完整的程序计算(A×B+C-70)/A,计算结果的商和余数分别存放在变量D和E中,其中A、B、C、D、E均为有符号数、字节变量。【参考习题4.12】

DATA SEGMENT A DB 10 B DB 15 C DB 20 D DB 0 E DB 0

DATA ENDS

STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS

CODE SEGMENT

ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX MOV AL,A MUL B PUSH AX MOV AL,C CBW

MOV BX,AX POP AX

ADD AX,BX SUB AX,70 IDIV A MOV D,AL MOV E,AH

MOV AH,4CH INT 21H CODE ENDS END START

【提示:】

(1)、若A、B均为字节,相乘之后的结果为字,此时再和字节变量C相加,需要考虑到将C从字节扩展到字(符号位扩展到高8位,可使用指令CBW) (2)、有符号数的乘除用IMUL和IDIV

MOV AL, A MOV BL, B IMUL BL MOV AL, C CBW ??

;AX←C ;A×B+C

ADD AX, BX

;AL←A ;BL←B ;A×B ;暂存到BX

MOV BX, AX

6、设计一个程序段,将AX和BX中的8位BCD数加CX和DX中的8位BCD数(AX和CX是最高有效寄存器),加法以后的结果必须存入数据段3000H开始的四个单元中(参考习题3.69) 如:AX||BX的内容是:12345656H(对应的十进制就是12345656)

CX||DX的内容是:78549910H(对应的十进制就是78549910)

则,加法的结果是90895566 3000H单元的内容为66h 3001H单元的内容为55h 3002H单元的内容为89h 3003H单元的内容为90h

【提示:】此题是多字节加法题,但每次加法结束后需要采用DAA调整。加法的十进制调整指令DAA,只能调整AL中的内容,所以,每次的ADD或ADC加法,只能采用8位加法。

MOV SI,3000H

MOV AL,34H MOV AH,12H MOV BL,56H MOV BH,56H MOV CL,54H MOV CH,78H MOV DL,10H MOV DH,99H

MOV [SI+200H],AL MOV AL,DL

MOV [SI+100H],0000 ADD AL,BL DAA

ADC [SI+100H],0000 MOV [SI],AL

MOV AL,[SI+100H] MOV [SI+101H],0000

ADD AL,BH ADD AL,DH DAA

ADC [SI+101H],0000 MOV [SI+1H],AL MOV AL,[SI+101H] MOV [SI+102H],0000 ADD AL,34H ADD AL,CL DAA

ADC [SI+102H],0000 MOV [SI+2H],AL MOV AL,[SI+102H] MOV [SI+103H],0000 ADD AL,AH ADD AL,CH DAA

MOV [SI+4H],0000 ADC [SI+4H],0000 MOV [SI+3H],AL mov ah,4ch int 21h

7、用串操作指令设计实现如下功能的程序段:先将100个数从6180H处移到2000H处,再从中检索出等于AL中字符的单元,并将此单元值换成空格符(设AL中的字符是?&?,且100个数中可能有多个?&?)。【参考习题3.79】 CLD

MOV CX,100 MOV SI,6180H MOV DI,2000H REP MOVSB CLD

MOV CX,100 mov al,'&'

LEA DI,[2000H] REPNE SCASB JZ Y

DEC DI MOV DI,20H Y:MOV BX,1 HLT