《汇编语言实例及习题》由会员分享,可在线阅读,更多相关《汇编语言实例及习题(14页珍藏版)》请在金锄头文库上搜索。
1、汇编语言程序设计,上次课后作业,4.6 假设数据项定义如下: DATA1 DB HELLO!GOOD MORNING! DATA2 DB 20 DUP(?) 用串操作指令编写程序段,使其分别完成以下功能: (1)从左到右将DATA1中的字符串传送到DATA2中。 (2)传送完后,比较DATA1和DATA2中的内容是否相同。 (3)把DATA1中的第3和第4个字节装入AX。 (4)将AX的内容存入DATA2+5开始的字节单元中。,解:(1) MOV AX,SEG DATA1 MOV DS,AX MOV AX,SEG DATA2 MOV ES,AX LEA SI,DATA1 LEA DI,DATA
2、2 MOV CX,20 CLD REP MOVSB,(2) LEA SI,DATA1 LEA DI,DATA2 MOV CX,20 CLD REPE CMPSB 。,(3) LEA SI,DATA1 ADD SI,2 LODSW,(4)LEA DI,DATA2ADD DI,5STOSW,编写循环结构程序,进行下列计算,结果存入RESULT内存单元 1+2+3+4+5+6+ +100 1+3+5+7+9+11+ +99 2+4+6+8+10+ +100 1+4+7+10+13+ +100 11+22+33+44+ +99,(1) CODE SEGMENTASSUME CS: CODESTART:
3、 XOR AX, AXMOV CX, 100AGAIN: ADD AX, CXLOOP AGAINMOV RESULT, AXMOV AX, 4C00HINT 21HCODE ENDSEND START,(2) CODE SEGMENTASSUME CS: CODESTART: XOR AX, AXMOV CX, 50MOV BX, 1AGAIN: ADD AX, BXADD BX, 2LOOP AGAINMOV RESULT, AXMOV AX, 4C00HINT 21HCODE ENDSEND START,(3) CODE SEGMENTASSUME CS: CODESTART: XOR
4、AX, AXMOV CX, 50MOV BX, 2AGAIN: ADD AX, BXADD BX, 2LOOP AGAINMOV RESULT, AXMOV AX, 4C00HINT 21HCODE ENDSEND START,(4) CODE SEGMENTASSUME CS: CODESTART: XOR AX, AXMOV CX, 34MOV BX, 1AGAIN: ADD AX, BXADD BX, 3LOOP AGAINMOV RESULT, AXMOV AX, 4C00HINT 21HCODE ENDSEND START,(5) CODE SEGMENTASSUME CS: COD
5、ESTART: XOR AX, AXMOV CX, 9MOV BX, 11AGAIN: ADD AX, BXADD BX, 11LOOP AGAINMOV RESULT, AXMOV AX, 4C00HINT 21HCODE ENDSEND START,4.17 数组SCORE中存有一个班级40名学生的英语课程成绩。按照059,6074,7584,85100统计各分数段人数,存入N0,N1, N2, N3变量内。DATA SEGEMNTSCORE DW 40 DUP(?) ;运行前置入具体数据N0 DW ?N1 DW ?N2 DW ?N3 DW ? DATA ENDS,CODE SEGMENT
6、ASSUME CS: CODE, DS: DATA START:MOV AX, DATA MOV DS, AXMOV N0, 0;各计数器清零MOV N1, 0MOV N2, 0MOV N3, 0LEA SI, SCOREMOV CX, 40 AGAIN:MOV AX, SICMP AX, 59;分段测试JA L1 L0: INC N0JMP NEXT L1: CMP AX, 74JA L2INC N1JMP NEXT,L2: CMP AX, 84JA L3INC N2JMP NEXT L3: CMP AX, 100JA NEXTINC N3 NEXT:ADD SI, 2LOOP AGAIN
7、EXIT:MOV AX, 4C00HINT 21HCODE ENDSEND START,数组ARRAY中存有10个无符号字整数(元素序号09),现在要删除其中的第5个元素。编写程序,把第69个元素移到第58个元素的位置上,并把第9个元素清零。 答: DATA SEGEMNTARRAY DW -386, 97, 213, 21, 77, -91, 56, 7, 123, 65DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV BX, 6*2 ;第六个元素在数组内的位移MOV CX, 4 ;循
8、环计数器置初值AGAIN: MOV AX, ARRAYBX ;取出一个元素MOV ARRAYBX-2, AX;向前移动一个位置ADD BX, 2 ;修改指针LOOP AGAIN ;循环4次MOV ARRAYBX, 0;最后一个元素清零MOV AX, 4C00HINT 21HCODE ENDSEND START,假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?它们的错误是什么?(1)MOV BP,AL(2)MOV WORD_OPBX+4*3DI,SP(3)MOV WORD_OPl,WORD_OP2(4)MOV AX,WORD_OPlDX(5)MOV SP,SS:DATA_WORDBXSI(7)MOV BXSI,2(8)MOV AX,WORD_ OPl+WORD_OP2,