微型计算机原理及应用答案(6)

2019-08-17 12:54

DEC CX ;否则计数值减一

JNE LOOP2 ;计数不为零再循环取下一个同学成绩 MOV [DX+1] ,SI HLT

NEXT: ADD SI , 1 ;名次加一 DEC CX JNE LOOP2

MOV [DX+1],SI ;如果计数为零比较完毕,最后将名次放到与成绩相连的单元中去

MOV DX , [DX+2] ;取下一个成绩去和其他N—1个数比较 LOOP LOOP1 HLT

END START

33.试编制程序,分别对NUM中各数统计出有多少个20,余下有多少个5,再余下有多少个2,再余下有多少个1。统计的各数分别存放在NUM20,NUM5,NUM2,NUM1的对应位置中,程序要求用主程序子程序形式编制,而且用两种参量传递方法分别编制主程序和子程序。数据段如下:

DATA SEGMENT

NUM DW 0133H,0D5FH,1234H COUNT EQU ($-NUM)/TYPE NUM NUM20 DB COUNT DUP(0) NUM5 DB COUNT DUP (0) NUM2 DB COUNT DUP (0) NUM1 DB COUNT DUP (0) DATA ENDS 解答:DADA SEGMENT

NUM DW 0133H , 0D5FH,1234H COUNT EQU ($-NUM)/TYPE NUM NUM20 DB COUNT DUP (0) NUM5 DB COUNT DUP(0) NUM2 DB COUNT DUP(0) NUM1 DB COUNT DUP(0) CMPNUM DB 20,5,2,1 DATA ENDS CODE SEGENT

ASSUME DS:DATA

ASSUME CS:CODE MAIN PROC FAR

START: MOV AX,DATA MOV DS ,AX

MOV DX ,OFFSET NUM20 MOV CX ,COUNT

MOV BX ,OFFSET CMPNUM MOV SI ,0 MOV DI , 0 CALL CMPDATA CMPDATA PROC NEAR PUSH AX PUSH DX

LOOP: MOV DX , [DI] LOOP1: MOV AX, [SI] CMP AX ,DX JE NEXT INE SI

LOOP LOOP1 JMP AGAIN

NEXT: ADD [BX][SI] ,1 INC SI LOOP LOOP1 AGAIN: MOV CX ,4

ADD DI , COUNT LOOP LOOP HLT

PUSH DX PUSH AX CMPDADT ENDP MAIN ENDP CODE ENDS

END START 34.已知两个正整数BE1(1~14)和BE2(0~14),但是,BEl+BE2<15。试编制一程序,把DA_WORD字单元的内容从第BE1位开始,自左至右的BE2个位清零,其余各位保持不变。处理的数据放在RESU单元中。 解答: MOV BL ,BE1 MOV CX ,BE2 MOV DX ,0 LOOP: MOV AX ,1 SAL AX, BL ADD DX,AX DEC BX DEC CX

JNZ LOOP ;此循环的目的是保证DX中的16位数的DE1位到其后BE2个位全部为一

NOT DX ;将DX中的数取反,保证BE1位到BE2位个数全为零,其他为1 MOV BX, OFFSET DA-WORD AND [BX] , DX

35.编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。

解答: CLRB MACRO n , cblock MOV CX , n ;长度为n

MOV AL , ‘ ’ ;把空格送到AL中 LEA DI, cblock ;DI中放字符区首地址 REP STOSB ;重复操作直到CX=0 ENDM

36.某工厂计算周工资的方法是每小时的工资率RATE乘以工作时间HOUR,另外每工作满十小时加奖金3元,工资总数存放在WAG中,请将月工资的计算编写成一条宏指令WAGES,并展开宏调用:

WAGES R1,42 解答:宏定义:

WAGES MACRO RATE,HOUR MOV AL,HOUR

MUL RATE MOV BX,AX MOV AX,HOUR DIV 10 MUL 3

ADD BX,AX MOV WAG,BX ENDM

宏调用:

WAGES R1,42 宏展开: MOV AL,42 MUL R1

MOV BX,AX MOV AX,42 DIV 10 MUL 3

ADD BX,AX MOV WAG,BX

37.给定宏定义如下:

DIF MACRO AX, Y MOV AX, X SUB AX, Y ENDM

ABSDIF MACRO V1,V2,V3 LOCAL CONT PUSH AX

DIF V1,V2 CMP AX,0 JGE CONT NEG AX CONT: MOV V3,AX POP AX ENDM

试展开以下调用,并判定调用是否有效。 (1)ABSDIF Pl,P2,DISTANCE

(2)ABSDIF [BX],[SI],X[D1],CX

(3)ABSDIF [BX][S1],X[BX][S1],240H (4)ABSDIF AX,AX,AX 解答:(1)宏展开: + PUSH P1 + MOV P1 , X + SUB P1 ,P2 + CMP P1,0 + JGE ??0000 + NEG P1

+??0000: MOV DISTANCE ,P1 + POP P1 调用有效

(2)宏展开:

+ PUSH [BX]

+ MOV [BX], X + SUB [BX], [SI] + CMP [BX], 0 + JGE ??0000 + NEG [BX]

+??0000 MOV X[DI] , [BX] + POP [BX] (3)宏展开:

+ PUSH [BX][SI]

+ MOV [BX][SI] , X

+ SUB [BX][SI],X[BX][SI] + CMP [BX][SI] ,0 + JGE ??0000 + NEG [BX][SI]

+??0000: MOV 240H [BX][SI] POP [BX][SI] (4)宏展开:

+ PUSH AX

+ MOV AX , X + SUB AX ,AX + CMP AX ,0 + JGE ??0000 + NEG AX ??0000: MOV AX AX POP AX 调用有效 38.试编制宏定义,要求把存储器中的一个用EOT字符结尾的字符串传送到另一个存储区去。 解答: SEND MACRO SCHARS,DCHARS LOCAL NEXT,EXIT PUSH AX PUSH SI MOV SI,0

NEXT:MOV AX,SCHARS[SI] MOV DCHARS[SI],AL CMP AL,24H JZ EXIT INC SI JMP NEXT EXIT: ENDM

39.宏指令BIN_SUB完成多个字节数据连减的功能: RESULT ←(A-B-C-D-?)

要相减的字节数据顺序存放在首地址为OPERAND的数据区中,减数的个数存放在COUNT单元中,最后结果存入RESULT单元。请编写此宏指令。

解答: BIN-SUB MARCO OPERAND , COUNT , RESULT MOV AX OPERAND+1 LOOP 1: CMP COUNT ,0 JNG EXIT

MOV BX OPERAND+2 SUB AX ,BX

DEC COUNT

INC OPERAND LOOP LOOP1

EXIT: MOV RESULT AX ENDM 40.请用宏指令定义一个可显示字符串GOOD:’GOOD STUDENTS:CLASSX NAME’,其中X和NAME在宏调用时给出。

解答: MSGGEN MACRO LAB ,X, NAME LAB DB `GOOD:‘GOOD STUDENTS:CLASS&X &NAME’` LOOP PRINTIT

PRINTIT: MOV DL LAB+1 ;将ASCII代码串放入DL MOV AH ,2 INT 21H DEC LAB ENDM 缺41

42.定义宏指令并展开宏调用。宏指令JOE把一串信息’MESSAGE NO.K’存入数据存储区XK中。

宏调用为: I=0 JOE TEXT,I ┆ JOE TEXT,I JOE TEXT,I 解答:joe macro a,j ; macro a,%j; j=j+1 endm

mary macro x,k;

x&k db message no, &k; endm i=o

joe text ,i

+ text0 db'message no.o' joe text , i

+ text1 db 'message no.1' joe text, i

+text db 'message no.2'

43.大多数DOS功能调用都需要在AH寄存器中存放不同的功能码。请将这种功能调用定义成宏指令DOS21。再定义宏指令DISP完成显示字符的功能,其中可使用已定义的DOS21。然后展开宏调用DISP ’*’ 。 解答:DOS21 MACRO NUM MOV AH,NUM INT 21H EDM

DISP ‘MACRO ZIFU’ MOV DI,‘ZIFU’ DOS21 02H ENDM

宏调用:


微型计算机原理及应用答案(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏州市2010年全民科学素质百项行动计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: