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

微机原理习题3

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

MOV DS,AX

MOV SI,OFFSET DATA_LIST MOV AX,[SI] MOV BX,[SI] MOV CX,LENGTH

XOR AX,AX XOR BX,BX CLC

AGAIN:CMP AX,[SI] JG NEXT1 MOV AX,[SI] NEXT1:CMP BX,[SI] JNG NEXT2 MOV BX,[SI] NEXT2:JNZ AGAIN MOV MAX,AX MOV MIN,BX CODE ENDS END START

12.给出等值语句如下: ALPHA EQU 100 BETA EQU 25 GAMMA EQU 2

下列表达式的值是多少? (1)ALPHA*100+BETA

(2)ALPHA MOD GAMMA+BETA (3)(ALPHA+2)*BETA-2 (4)(BETA/3)MOD5

(5)(ALPHA+3)*(BETA MOD GAMMA) (6)ALPHA GE GAMMA (7)BETA AND 7 (8)GAMMA OR 3 解答:

(1)=10025;(2)=19;(3)=2548;(4)=3;(5)=103;(6)=0;(7)=01H;(8)=03H。 13.对于下面的数据定义,三条指令分别汇编成什么? TABLEA DW 10 DUP(?) TABLEB DB 10 DUP(?) TABLEC DB ‘1234’ ┊ ┊

MOVE AX,LENGTH TABLEA MOVE BL,LENGTH TABLEB MOVE CL,LENGTH TABLEC 解答:

MOVE AX,10 MOVE BL,10 MOVE CL,1

14.对于下面的数据定义,各条MOVE指令单独执行后,有关寄存器的内容是什么? FLDB DB

TABLEA DW 20DUP(?) TABLEB DB ‘ABCD’

MOVE AX,TYPE FLDB MOVE AX,TYPE TABLEA MOVE CX,LENGTH TABLEA MOVE DX,SIZE TABLEA MOVE CX,LENGTH TABLEB 解答: AX=0001H AX=0002H CX=0014H DX=0028H CX=0001H。

15.指出下列伪操作表达方式的错误,并改正之。 (1)DATA_SEG SEG (2)SEGMENT ‘CODE’

(3)MYDATA SEGMENT/DATA ┆

ENDS (4)MAIN_PROC PROC FAR ┆

END MAIN_PROC MAIN_PROC ENDP 答:(1) DATA-SEG SEGMENT

(2) CODE SEGMENT PARA 'CODE'

(3) /DATA错。定义数据段应在代码段中用ASSUME。ENDS缺少‘MYDATA’。 (4) 多余END,MAIN-PROC应删除。 16.按下面的要求写出程序的框架 (1)数据段的位置从0E000H开始,数据段中定义—个l00字节的数组,其类型属性既是字

又是字节;

(2)堆栈段从小段开始,段组名为STACK,

(3)代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值; (4)程序结束。 答: DATA-SEG SEGMENT ORG 0E000H

BYTE-ARRAY LABLE BYTE WORD-ARRAY DW 50 DUP(?) DATA-SEG ENDS

STACK-SEG SEGMENT PARA 'STACK' STACK-SEG ENDS CODE-SEG SEGMENT

ASSUME CS:CODE-SEG,DS:DATA-SEG,SS:STACK-SEG ORG 1000H

START: MOV AX ,DATA-SEG MOV DS ,AX

MOV AX ,STACK-SEG MOV SS ,AX . .

CODE-SEG ENDS END START

17.假设在数据段X_SEG、附加段Y_SEG和堆栈段Z_SEG中分别定义了字变量X,Y和Z。试

编制一完整的程序计算

X?X+Y+Z 答: 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。

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