云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 微机原理习题3

微机原理习题3

  • 62 次阅读
  • 3 次下载
  • 2025/6/3 15:44:04

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 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

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

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com