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

2019-08-17 12:54

答: X-SEG SEGMENT X DW ? X-SEG ENDS Z-SEG SEGMENT Z DW ? Z-SEG EMDS

Y-SEG SEGMENT Y DW ? Y-SEG ENDS CODE SEGMENT MAIN PROC FAR

ASSUME ES:Y-SEG,CS:CODE,DS:X-SEG,SS:Z-SEG START PUSH DS SUB AX AX PUSH AX

MOV AX ,Y_SEG MOV ES ,AX MOV AX,Z_SEG MOV SS,AX

MOV AX,X_SEG MOV DS,AX MOV AX,DS:X MOV BX,ES:Y ADD AX BX JO OVERFLOW MOV BX ,SS:Z ADD AX,BX JO OVERFLOW MOV DS:X,AX OVERFLOW :RET MAIN ENDP CODE ENDS END START

18.写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的AUGEND和附加段E_SEG中的ADDEND相加,并把结果存放在D_SEG段中的SUM中。其中AUGEND、ADDEND和SUM均为双精度数,AUGEND赋值为99251,ADDEND赋值为-15962。 解答:TITLE SUM D_SEG SEGMENT AUGW LABEL WORD AUGEND DD 99251 SUM DW 2 DUPL (?) D_SEG ENDS E_SEG SEGMENT ADDW LABEL WORD ADDEND DD -15962 E_SEG ENDS

C_SEG SEGMENT

ASSUME DS :D_SEG ,ES:E_SEG ,CS:C-SEG MAIN PROC FAR START :PUSH DS MOVE AX,0

PUSH AX

MOV AX,D_SEG MOV DS ,AX MOV AX,E_SEG MOV ES,AX ADDT :MOV AX,AUGW MOV BX,AUGW+2

ADD AX, ES : ADDW ADC BX, ES: ADDW+2 MOV SUM ,AX MOV SUM+2,BX RET MAIN ENDP C_SEG ENDS

END START

19.读下面程序段,请问:在什么情况下,本段程序的执行结果是AH=0? BEGIN: IN AL,5FH TEST AL,80H JZ BRCHl MOV AH,0 JMP STOP BRCHl: MOV AH,0FFH STOP: HLT

解答:AL中的最高位为1时。 20.读程序:

START: IN AL,20H MOV BL,AL IN AL,30H MOV CL,AL MOV AX,0 ADLOP: ADD AL,BL ADC AH,0 DEC CL JNZ ADLOP HLT 请问: (1)本程序实现什么功能? (2)结果在哪里?

解答:完成20H*30H,结果在AX中。

21.请编一程序段完成AX*l0的任务(要求不准用乘法指令做)。 解答: MOV BX,AX MOV CL 2 SHL AX, CL ADD AX,BX SHL AX ,1 22.编程序使:

(1)AX寄存器低4位清零。 (2)BX寄存器低4位置“1”。 (3)CX寄存器低4位变反。

(4)用TEST指令测试DL寄存器位3、位6是否同时为0,若是,将0送DL;否则l送DH。 解答 :1,AND AX ,0FFF0H 2,OR BX ,000FH

3,XOR CX ,000FH 4,TEST DL ,48H JZ LOOP MOV DH,1 HLT

LOOP :MOV DL ,0 HLT

23.编一程序段,完成符号函数(-128≤x≤127):

1 (x.>0)

y= 0 (x=0) -1 (x<0)

假设x的值存放在DATAl中,y的值存放在DATA2中。 解答: START :MOV AL ,DATA1 AND AL,AL JGE BIGR MOV AL,0FFH MOV DATA2.AL HLT

BIGR:JE EQUL MOV AL,1 MOV DATA2,AL HLT

EQUL:MOV DATA2,AL HLT

24.设AX寄存器中有一个16位二进制数,编一程序,统计AX中“l”的个数,统计结果送CX中。

解答: START :MOV CX ,0 LOOP: SUB AX,0 JZ STP SAL AX,1 JNC NOD INC CX

NOD:JMP LOOP STP:HLT

25.编一子程序利用XLAT指令把十六进制数转换成ASCII码。假设ASCII码

存放在以 DAT1为首地址的数据区中,对应的16进制数放在以DAT2为首地址的数据区中,转换结果送以DAT3为首地址的数据区中。 解答:MAIN :PUSH BX PUSH SI PUSH DI PUSH CX PUSH AL PUSH DS

START:MOV BX,DATA1 MOV SI ,DATA2 MOV DI DATA3 MOV CX ,16 NEST:LODSB XLAT DATA1 STOSB

LOOP NEST

POP DS POP AL POP CX POP DI POP SI POP BX

RET 26.(略) 27.试分三种情况说明:当NUM字节单元中数据是什么情况时,TEMP字节单元分别是多少? NUM DB XX TEMP DB ? ┆ ┆

MOV AL,NUM TEST AL,99H JNE RES AND AL,99H JMP END0 RES: JS NE INC AL JMP END0 NE: DEC AL

END0: MOV TEMP,AL ┆

答:NUM字节单元中的数据是一个八位2进制数。当其第1、4、5、8位均为0时,将此数装入temp单元,若不满足此条件,则又分为两种情况,其最高位为1时(负数),将此数减1装入temp单元;其最高位为0时(正数),将此数加1装入temp单元。

28.试编制一程序,把CHAR1中各小写字母分别转换为对应的大写字母,并存放在 CHAR2各字节单元中:

CHAR1 DB ‘capitalize’ CHAR2 DB $-CHAR1 DUP(?) 解答:MOV CX ,0AH MOV SI ,0 MOV AX , 1AH

LOOP1: ADD AX ,CHAR1[SI] MOV CHAR2[SI], AX INC SI LOOP LOOP1

29.试编制一程序,把DA_BYl字节单元中数据分解成三个八进制数,其高位八进制数存放在DA-BY2字节单元中,最低位存放在DA_ BY2+2字节单元中。 DA_BY1 DB 6BH

DA_BY2 DB 3 DUP(0) 解答 : MOV AL ,DA-BY1+1 SHR AL ,2

MOV DA-BY2 ,AL MOV AL ,DA-BY1

AND AL ,07H ; (0,111) MOV DA-BY2+2,AL

30.试编制一程序,找出DA数据区中带符号的最大数和最小数。 解答: MOV CX , LENGTH MOV BX ,0000H

MOV DX ,0000H MOV SI ,0000H

LOOP1: MOV AX , ADDRESS[SI] CMP AX ,80H JGE W1

CMP AX ,BX JG W2 INC SI

LOOP LOOP1 HLT

W1: CMP AX ,DX JGE W3 JMP LOOP1 W3: MOV DX ,AX JMP LOOP1 W2: MOV BX ,AX JMP LOOP1

31.试编制一程序,统计出某数组中相邻两数间符号变化的次数。 解答:MOV CX ,LENGTH MOV SI ,0

MOV AX ,ADDRESS[SI] AND AX ,80H INC SI

MOV BX ,ADDRESS[SI] AND BX ,80H SUB BX ,AX

NEG BX

CMP BX ,80H JG W1

LOOP LOOP1 HLT

W1 INC DX JMP LOOP1 HLT

32.设某数据段已有N个学生的某科成绩(百分制),并按学号的次序存放在以STUD为首址各字单元的低字节中。现在要求按成绩的高低记入名次,并把名次填入成绩所在字单元的高字节中,各字单元的信息格式为:

15 8 7 0 名 次 成 绩 成绩相同者,名次相同。试编制一程序实现上述要求(不要排序)。 ’ 解答:START: MOV BX , OFFSET STUD

MOV DX ,OFFSET STUD ; BX ,DX中放置成绩表的偏移地址 MOV CX , N—1 ;CX中放置的是要比较的次数 MOV SI , 0 ;名次放在SI中 LOOP1: MOV AL,[DX]

LOOP2: MOV BX , [BX+2] ;取下一个同学的成绩 CMP AL , [BX]

JA NEXT ;如果比下一个同学成绩高则到NEXT即使名次加一


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

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

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

马上注册会员

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