当前位置:文档之家› 汇编语言例子

汇编语言例子

实验三:1)题目:在内存中从ARRAY开始的连续三个字节单元存放着30H,40H,50H。

编制程序将这三个连续的数据传送到内存TABLE开始的单元。

DATA SEGMENTARRAY DB 30H,40H,50H 定义数据段TABLE DB 3 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,ARRAYLEA DI,TABLEMOV CX,3REP MOVSBJMP $CODE ENDSEND START(2)题目:把内存2000H和3000H字单元的内容相加,结果存入4000H单元。

(不考虑溢出)DATA SEGMENTORG 2000HDW 1234HORG 3000HDW 5678HORG 4000HDW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,[2000H]ADD AX,[3000H]MOV [4000H],AXJMP $CODE ENDSEND START实验四1、数据传送指令和算术运算指令完成NUM1和NUM2相加,结果放入SUM中。

DATA SEGMENTNUM1 DW 0012H,0030H,0FC21H ; 数1NUM2 DW 3E81H,44E9H,6D70H ; 数2SUM D W 3 DUP(?) ; 结果单元DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV CX,3LEA SI,NUM1LEA DI,NUM2LEA AX,SUMHE:MOV BX,[SI]ADD BX,[DI]MOV [AX],BXINC SIINC DIINC AXLOOP HEMOV AH, 4CH ; 返回DOSINT 21HCODE ENDSEND START2、内存中自TABLE开始的七个单元连续存放着自然数0至6的立方值(称作立方表)。

;任给一数X(0≤X≤6)在XX单元,查表求X的立方值,并把结果存入YY单元中。

;提示用XLAT指令DATA SEGMENTTABLE DB 0H,1H,2H,3H,4H,5H,6HXX DB 1DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA BX,TABLEMOV AL,[XX]XLATMOV DL,ALMOV AH,02HINT 21HJMP $CODE ENDSEND START实验五2、输入一个字符,如果等于'Y',则输出Assemble,否则输出Others。

DATA SEGMENTSTR1 DB 'Assemble'STR2 DB 'Others'CODE SEGMENTSTART:MOV AH,01HINT 21HCMP AL,'Y'JZ HELEA DX,STR2MOV AH,9INT 21HJMP EXTHE:LEA DX,STR1MOV AH,9INT 21HEXT:JMP $CODE ENDSEND START3、编写汇编程序,(Z-(X*Y)-100)/X。

已知X、Y、Z均为8位符号数,已经分别装在X、Y、Z单元中,将计算结果商存入100H中,余数存入200H中。

DATA SEGMENTX DB 10HY DB 20HZ DB 40HORG 100HNUM1 DB ?ORG 200HNUM2 DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,[Y]MOV BL,[X]MOV BH,[Z]MUL BLSUB AX,64HMOV DX,AXMOV AL,BHCBWSUB AX,DXDIV BLMOV NUM1,ALMOV NUM2,AHJMP $CODE ENDSEND START4、编写汇编程序,已知X为8位符号数,装在X单元中,请求出X补码并存入Y单元中。

DATA SEGMENTX DB 88HY DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,[X]TEST AL,0JG HENEG ALOR AL,80HHE:MOV [Y],ALJMP $CODE ENDSEND START16 7 112 123 111、已知X单元存放了无符号整数123,请用程序把123输出。

DATA SEGMENTX DB 7BHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,[X]DIV 0AHMOV BH,AHCBWDIV 0AHMOV BL,AHMOV DL,ALMOV AH,2INT 21HMOV DL,BLMOV AH,2INT 21HMOV DL,BHMOV AH,2INT 21HJMP $CODE ENDSEND START2、已知在Y单元中FF884455H这样一个数据,请用位转移指令把数据存放为F884455FH DATA SEGMENTY DB 55H,44H,88H,0FFHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,YMOV AX,[SI]MOV BX,[SI+2]TEST AX,8000HJZ NEXTSTCJMP NEXT1NEXT:CLCNEXT1:RCL BX,1RCL AX,1RCL BX,1RCL AX,1RCL BX,1RCL AX,1RCL BX,1RCL AX,1CODE ENDSEND START3、讲解loop的使用,完成1+2+3+……+100的程序。

CODE SEGMENTSTART:MOV CX 100MOV AX,1MOV BX,0HE:ADD BX,AXINC AXLOOP HECODE ENDSEND START1.有一字符串'I am a student$'存在0100H地址开始的存储空间,请分别用串操作指令MOVSB 和循环指令把字符串存到0200H地址开始的存储空间。

DATA SEGMENTORG 100HSTR DB 'I am a student$'ORG 200GSTR1 DB 14 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,14LEA SI,STRLEA DI,STR1HE: MOV AX,[SI]MOV [DI],AXINC SIINC DILOOP HEJMP $CODE ENDSEND STARTDATA SEGMENTORG 100HSTR DB 'I am a student$'ORG 200GSTR1 DB 14 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,14LEA SI,STRLEA DI,STR1REP MOVSBJMP $CODE ENDSEND START2.有10个有符号数33H,12H,30H,0FCH,21H,3EH,81H,44H,0E9H,7DH;存在NUM开始的空间中,统计偶数的个数、大于0的个数,及最大值。

DATA SEGMENTNUM DB 33H,12H,30H,0FCH,21H,3EH,81H,44H,0E9H,7DHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,NUMMOV CX,10MOV DL,[NUM]MOV BL,0MOV BH,0MOV AL,[SI]TEST AL,1HJNZ NEXTINC BHNEXT:CMP AL,0JNZ NEXT1INC BLNEXT1:CMP DL,[SI]JG EXTMOV DL,[SI]EXT:INC SILOOP HECODE ENDSEND START3.有一字符串'1I5am3a4stu9de6n7t$',利用程序计算出字符串中的数字之和并把结果放入BX 中。

DATA SEGMENTNUM DB '1I5am3a4stu9de6n7t$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,NUMMOV BX,0HE:MOV AX,[SI]CMP AX,'$'JZ EXTCMP AX,'0'JL NEXTCMP AX,'9'JG NEXTADD BX,AXNEXT:LOOP HEJMP $CODE ENDSEND START1.有一字符串'Hello to MASM!20150530'存在0100H地址开始的存储空间,请把字符串中的小写改成大写,大写改成小写,新的字符串存入0200H开始的存储空间。

DATA SEGMENTORG 100HNUM DB 'Hello to MASM!20150530$'ORG 200HNUM1 DB 22 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,NUMLEA DI,NUM1MOV AL,[SI]CMP AL,'$'JZ EXTCMP AL,'A'JL NEXTCMP AL,'Z'JG NEXT1ADD AL,20HJMP NEXTNEXT1CMP AL,'a'JL NEXTCMP AL,'z'JG NEXTSUB AL,20HNEXT:MOV [DI],ALINC SIINC DILOOP HEEXT:JMP $CODE ENDSEND START2.有10个有符号数33H,12H,30H,0FCH,21H,3EH,81H,44H,0E9H,7DH;存在NUM开始的空间中,请把它们从大到小排序。

相关主题