1、此文档仅供收集于网络,如有侵权请联系网站删除 8(1) DATA SEGMENT ORG 0E000H TA1 DB '01234' TA2 DB 5 DUP(?) TA3 DW 1234H,5678H,1369H TA4 DW 2 DUP(?) TA5 DD 2A004455H,3B334778H DATA ENDS (2) STACKI SEGMENT PAGE STACK SBUFF DB 100 DUP(?) ETACKI ENDS (3) CODE SEGMENT
2、 ASSUME CS:CODE,DS DATA,ES:EXT,SS:STC START MOV AX,DATA MOV AX,DATA MOV DS,AX MOV AH,4CH INT 21H CODE ENDS END START 9 (1) COUNT EQU 16H为16H中字符串的长度; COUNT DW 16H为每个表达式分配两个单位的储存单元并将16H存入该单元中。 (2) MOV AX,BX为将BX的内容传给AX MOV AX,[BX]为将BX
3、的有效地址传给AX (3) MOV AX,OFFSET STB为将STB的偏移地址装入AX MOV AX, STB为将STB中的数据传入AX (4) MOV AX,OFFSET STB为将STB的偏移地址装入AX LEA AX,STB为将STBDE 有效地址传给AX 12 16H 21H 41H 42H 31H 32H 43H 44H 0010H 0010H 0020H X1的逻辑地址PA=10A0H*10H+0010H=10A10H X2的逻辑地址PA=10A0H*10H+0022H=10A22H
4、 13 (1)2437H (2)00H (3)2 (4)43H (5)10 (6)10 14 (1) (AL)=44H (2) (AX)=0078H (3) (AX)=0FH 8解: (1) DATA SEGMENT ORG 0E000H TA1 DB '01234' TA2 DB 5 DUP(?) TA3 DW 1234H,5678H,1369H TA4 DW 2 DUP(?) TA5 DD 2A004455H,3B334778H DATA ENDS (2) STACKI
5、 SEGMENT PAGE STACK SBUFF DB 100 DUP(?) ETACKI ENDS (3) CODE SEGMENT ASSUME CS:CODE,DS DATA,ES:EXT,SS:STC START MOV AX,DATA MOV AX,DATA MOV DS,AX MOV AH,4CH INT 21H CODE ENDS END START 9解: (5) COUNT EQU 16H为16H中字符串的长度;
6、 COUNT DW 16H为每个表达式分配两个单位的储存单元并将16H存入该单元中。 (6) MOV AX,BX为将BX的内容传给AX; MOV AX,[BX]为将BX的有效地址传给AX (7) MOV AX,OFFSET STB为将STB的偏移地址装入AX; MOV AX, STB为将STB中的数据传入AX (8) MOV AX,OFFSET STB为将STB的偏移地址装入AX; LEA AX,STB为将STBDE 有效地址传给AX 12解: 16H 21H 41H 42H 31H 32H 43H 44H
7、 0010H 0010H 0020H X1的逻辑地址PA=10A0H*10H+0010H=10A10H X2的逻辑地址PA=10A0H*10H+0022H=10A22H 13解: (1)2437H; (2)00H; (3)2; (4)43H; (5)10; (6)10 14解: (4) (AL)=44H; (5) (AX)=0078H; (6) (AX)=0FH 18.编写程序,将MBUF为起始单元的5个数按相反次序传送到NBUF开始的存储单元中 AGAIN:MOV AL,[SI-1] OR
8、AL,30H MOV [DI],AL DEC SI INC DI LOOP AGAIN MOV AL,'$' MOV [DI],AL MOV DX,OFFSET NBUF MOV AH,09H INT 21H MOV AH ,4CH INT 21H CODE ENDS END START DATA SEGMENT MBUF DB 5,8,3,7,5 COUNT EQU $-MBUF NBUF DB 6 DUP
9、) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET MBUF MOV DI,OFFSET NBUF MOV CX,COUNT ADD SI,CX 20.编写程序,将内存中某数据块中的正数和负数分开,并分别将这些正数和负数送同一数据段的两个缓冲区中,并在屏幕上显示正数和负数的个数(数据自定)。 DATA SEGM
10、ENT D1 DB 1,3,-1,-3,4,0,2 COUNT EQU $-D1 D2 DB 100 DUP(?) D3 DB 100 DUP(?) PNUM DW ? NNUM DW ? CONST DW 10000,1000,100,10,1 DECS DB 5 DUP(0) HEAD1 DB "THE NUMBER OF POSITIVE NUMBER IS:$" HEAD2 DB "THE NUMBER OF NEGATIVE NUMBER IS:$" DATA ENDS MOV AH,0
11、9H LEA DX,HEAD2 INT 21H MOV AX,NNUM CALL DISPLAY MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H MOV AH,4CH INT 21H DISPLAY PROC NEAR MOV CX,5 LEA SI,CONST LEA DI,DECS CO
12、NV: MOV BL,0 AGAIN1: SUB AX,[SI] JC NEXT INC BL JMP AGAIN1 NEXT: ADD AX,[SI] OR BL,30H MOV [DI],BL INC SI INC SI INC DI LOOP CONV MOV AH,02H MOV CX,5 LEA DI,DECS CONV1:MOV DL,[DI] CMP DL,30H
13、 JNZ CONV3 INC DI LOOP CONV1 STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX LEA BX,D1 LEA SI,D2 LEA DI,D3 MOV CX,COUNT AGAIN:MOV AL,[BX]
14、 CMP AL,0 JGE LOP1 MOV [DI],AL INC DI INC NNUM JMP LOP LOP1: JG LOP2 JMP LOP LOP2: MOV [SI],AL INC SI INC PNUM LOP: INC BX LOOP AGAIN MOV AH,09H MOV DX,OFFSET HEAD1 INT 21H MOV AX,PNUM C
15、ALL DISPLAY MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H CONV3:INT 21H CMP CX,0 JZ QUIT INC DI MOV DL,[DI] LOO
16、P CONV3 QUIT: RET DISPLAY ENDP CODE ENDS END START 21.编写程序,从内存BLOCK开始,存放着10个字节的有符号数,从这些数中找出绝对值最大的数,将其存入MAX中。 AGAIN:MOV AL,[SI] CMP AL,0 JGE LOP NEG AL LOP: CMP AL,BL JBE LOP1 XCHG AL,BL LOP1: INC SI LOOP AGAIN ADD BL,30H
17、 MOV MAX,BL MOV DL,BL MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START DATA SEGMENT BLOCK DB 1,-1,4,-3,8,9,-5,3,-1,2 COUNT EQU $-BLOCK MAX DB ? DATA ENDS STACK SEGMENT STACK DB 100 DUP(0) STACK ENDS CODE SEGMENT ASSUME
18、 CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET BLOCK MOV BL,0 MOV AH,0 MOV CX,COUNT 26.编写程序,将内存中N个无符号数据从大到小排序后输出显示 LOP1:MOV SI,CX MOV DI,1 LEA BX,BUF LOP2:MOV AL,[BX] CMP AL,
19、[BX+1] JAE LOP3 XCHG AL,[BX+1] MOV [BX],AL MOV DI,0 LOP3:INC BX LOOP LOP2 CMP DI,0 JNZ OK MOV CX,SI LOOP LOP1 OK: MOV CX,NUM LEA BX,BUF OK1: MOV AL,[BX] CBW CALL DISPLAY MOV DL,' ' MOV AH,02H INT 21H
20、 INC BX DATA SEGMENT BUF DB 10,68,105,7,28 NUM EQU $-BUF CONST DW 10000,1000,100,10,1 DECS DB 5 DUP(0) ADR DB ? DATA ENDS STACK SEGMENT STACK DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV CX,N
21、UM MOV ADR,0 DEC CX LOOP CONV3 MOV AH,02H MOV CX,5 LEA DI,DECS CONV4: MOV DL,[DI] CMP DL,30H JZ NODIS JMP DISP NODIS: INC DI LOOP CONV4 DISP: INT 21H CMP CX,0
22、 JZ QUIT INC DI MOV DL,[DI] LOOP DISP QUIT: POP CX POP BX POP AX RET DISPLAY ENDP CODE ENDS END START LOOP OK1 MOV AH,4CH INT 21H DISPLAY PROC NEAR PUSH AX PUSH BX PUSH CX MOV CX,5 LEA SI,CONST LEA DI,DECS CONV3: MOV BL,0 LOP: SUB AX,[SI] JC NEXT INC BL JMP LOP NEXT: ADD AX,[SI] OR BL,30H MOV [DI],BL INC SI INC SI INC DI 只供学习与交流






