第4章--习题及参考解答.doc
《第4章--习题及参考解答.doc》由会员分享,可在线阅读,更多相关《第4章--习题及参考解答.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除第4章 习题及参考解答 1试编一程序,把地址偏移量为100H单元开始的256个单元分别写入00H,01H,02H,03H,FFH数据。 解源程序如下 DATASEGMENT ORG 100H BUF1 DB 256 DUP(?)COUNTEQU$BUF1 DATA ENDSSTKSEGMENT STACKDB 100 DUP(?)STKENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF1;戓 LEA SI,BUF1 MOV C
2、X,COUNT XOR AL,AL;或 MOV AL,00H NEXT:MOV SI,AL INC AL INC SI LOOP NEXT MOV AH,4CH INT 21 HCODE ENDS END START 2统计上题写入的数据块中0元素、正元素、负元素的个数,并分别把统计结果送入上述数据块之后的三个单元中。 解DATASEGMENT ORG 100HBUF1 DB 00H,01H02H,0FEH,0FFH;共256个数据COUNT EOU$BUF1DB 3 DUP(?)DATA ENDSSTKSEGMENT STACKDB 100 DUP(?)STKENDSCODE SEGMENT
3、 ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV S1,OFFSET BUF1 MOC CX,COUNT XOR BX,BX ;BL与BH分别存放正、负元素的个数 XOR DH,DH ;DH寄存器存放0元素个数NEXT2:MOV AL,SI CMP AL,0 JZ ZER0 ;若ZF=1,则为0,转至ZERO,DH+1 JS NEGAT ;若SF=0则为负数,BH+1INC BL ;既不是0又不是负,则为正数,BL+1JMP NEXT3ZERO:INC DH ;0的个数加1 JMP NEXT3NEGAT:INC BH ;负数个数加1N
4、EXT3:INC SI ;修改地址指针SI LOOP NEXT2 ;未完,继续循环 MOV SI,DH ;存入0元素个数统计结果 INC SI MOV SI,BX ;存入正、负数个数统计结果 MOV AH,4CH INT 21HCODEENDS END START 4把地址偏移量为STRG1单元开始的128个单元的内容传送到地址偏移量为STRG2开始的单元中。 解 DATA SEGMENT STRGl DB XXH,XXH,XXH,XXH ;1 28个数据 COUNTEOU$STRGl STRG2 DB 128 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:C
5、ODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET STRG1 MOV DI,OFFSET STRG2 MOV CX,COUNT CLD REP MOVSB MOV AH,4CH INT 21 H CODE ENDS END START 5寄存器SI做地址指针,自SI所指的内存单元开始连续存放三个无符号数(以字为单位),编一程序求它们的和,并将结果存放在这三个数之后的单元中。解DATASEGMENTBUF DW XXH,YYH,ZZHSUM DW ?,?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DAT
6、ASTART:MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF MOV DI,OFFSET SUM MOV AX,SIADD AX,SI+2MOV DI,AXMOV AX,0ADDC AX,0MOV DI+2,AXMOV AX,DI ADDC AX,SI+4 MOV DI,AXMOV AX,0ADDC AX,DI+2MOV DI+2,AX MOV AH,4CH INT 21HCODEENDS END START6读下面程序段,问:在什么情况下本段程序的执行结果是AH0?START:IN AL,5FH MOV AH,0 JZ BRCH MOV AH,0 JMP ST
7、OPBRCH:MOV AH,0FFHSTOP:INT 20H解 当标志寄存器的ZF=0时,执行结果AH0。(JZ之前的两条指令对零标志没有影响)7下面语句在存储器中分别为变量分配多少字节?0NE DW 10TW0 DW 4 DUP(?),5THREE DB 2 DUP(?,8 DUP(0)COUNT EQU 10FOUR DD COUNT DUP(?)FIVE DBHOW ARE YOU?解ONE DW 10 ;为ONE分配2个字节 TWO DW 4 DUP(?),5 ;为TWO分配10个字节 THREE DB 2 DUP(?,8 DUP(0);为THREE分配18个字节 COUNT EQU
8、10 ;不给COUNT分配存储单元 FOUR DD COUNT DUP(?) ;为FOUR分配40个字节 FIVE DB HOW ARE YOU? ;为FIVE分配12个字节 8数据定义语句如下所示: FIRST DB 90H,5FH,6EH,69H SECOND DB 5 DUP(?) THIRD DB 5 DUP(?) FORTH DB DUP(?) 自FIRST单元开始存放的是一个四字节的十六进制数(低位字节在前),要求: (1)编一段程序将这个数左移两位后存放到自SECOND开始的单元(注意保留移出部分); (2)编一段程序将这个数右移两位后存放到自THIRD开始的单元(注意保留移出部
9、分); (3)编一段程序将这个数求补后存放到自FORTH开始的单元。解DATASEGMENTFIRST DB 90H,5FH,6EH,69HSECONDDB 5 DUP (?)THIRD DB 5 DUP (?)FORTH DBDUP (?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX CALL SUBP1 CALL SUBP2 CALL SUBP3 MOV AH,4CH INT 21HSUBP1 PROC MOV SI,OFFSET FIRST MOV DI,OFFSET SECOND XOR
10、BL,BL MOV CL,2 MOV AX,SIMOV DX,SI+2LOP1:SHL AX,1 RCL DX,1 RCL BL,1 DEC CL JNZ LOP1 MOV DI,AX MOV DI+2,DX MOV DI+4,BL RET SUBP1ENDP SUBP2PROC MOV SI,OFFSET FIRST MOV DI,OFFSET THIRD XOR BL,BL MOV CL,2 MOV AX,SI MOV DX,SI+2LOP2:SHR DX,1 RCR AX,1 RCR BL,1 DEC CL JNZ LOP2 MOV DI,BL MOV DI+1,AX MOV DI+3,
11、DX RET SUBP2ENDP SUBP3PROC MOV SI,OFFSET FIRST MOV DI,OFFSET FORTH MOV AX,SI MOV DX,SI+2 NOT AXNOT DXADD AX,1 ADC DX,0 MOV DI,AX MOV DI+2,DX RETSUBP3ENDPCODE ENDS END START 9指令语句AND AX,OPD1 AND OPD2中,OPD1和OPD2是两个已赋值的变量,问两个AND操作分别在什么时间进行?有什么区别? 解前面的AND是指令,在程序运行时执行,后面的AND是运算符,在汇编的时候由汇编程序计算,表达式计算结果出现在执
12、行程序中。二者的区别在于,前者是指令,程序运行时执行,后者是运算符,汇编时计算。 10如下指令或程序是否有错,若有错,请指出错在哪里? (1)KI EOU 1024 MOV K1,AX (2)MOV DS,100 MOV 1000,2000 (3)IMP DB ? MOV IMP,AX (4)A1 DB ? A2 DB 10 CMP A1,A2 (5)将1000送入X1单元,用如下程序: X1 DB ? MOV BX,X1 MOV BX,1000 解 (1)MOV K1,AX错。因为K1为立即数,它不能作为目的操作数。 (2)这两条指令都是错的。第一条立即数不能直接送给段寄存器;第二条两个操作
13、数不能同时为内存操作数。 (3)MOV IMP,AX错。两操作数类型不匹配,IMP是一字节内存单元,而AX寄存器中为16位数据。 (4)CMP A1,A2错。两个操作数A1与A2不能同时为内存操作数。(5)MOV BX,1000错。两操作数类型不匹配,BX只定义了一字节单元,而1000是16位数据。 118086汇编语言程序中段的类型有几种?各段如何定义?段定义语句中,定位类型、组合类型、类别各起什么作用?各有什么含义?解8086汇编语言中,段的类型有三种,即代码段、堆栈段、数据段(附加数据段可归属于数据段)。各段可用段定义语句(SEGMENT与ENDS)和段名赋给段寄存器语句(ASSUME)
14、来定义。段定义语句中,定位类型表示此段的起始边界要求,可允许4种段的起始边界,即PAGE、PARA、WORD或BYTE。它们分别表示段的起始值为以页、节、字、字节为边界,若此项省略,则默认值为PARA。组合类型用来告诉连接程序本段与其他段的关系,分别为NONE、PUBLIC、COMMON、AT表达式、STACK或MEMORY。每一种的含义请参看主教材。类别是连接程序(LINK)需要的。它可以是任何合法的名称,必须用单引号括起来,连接程序只使同类别的段发生关联。典型类别如CODE、STACK。 12使用DOS功能调用0AH从键盘输入40个字符的字符串并将其送入一输入缓冲区。在按下Enter键后,
15、显示这些字符。解NAMEKBDINPUTCODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100HSTART:JMP BEGINBUF DB41NUMBDB ?CHARSDB 41 DUP(?)MSG1DBType anything,followed by enter,0DH,0AH,$MSG2 DB 0DH,0AH,Contents of the KBD input buf:,0DH,0AH,$BEGIN:MOV AX,CS MOV DS,AX MOV DX,OFFSET MSG1 MOV AH,9 INT 21H MOV DX,OFFSET BUF MOV A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 参考 解答
限制150内