第一范文网 - 专业文章范例文档资料分享平台

微机原理习题3

来源:用户分享 时间:2025/5/25 3:55:13 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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

搜索更多关于: 微机原理习题3 的文档
微机原理习题3.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4nkye2ptlj58u602wq6s_7.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top