西安邮电大学,微机原理小抄
MOV AH,9;INT 21H;RET;ALLMATCH: MOV DX OFFSET MESG1;MOV AH 9;MOV 21H;RET ; MAIN ENDP;CODE ENDS ; END START;
13.编写程序,将一个包含有20个数据的数组M分成两个数组,正数组P和负数组,分别把这两个数组中的数据的个数显示出来。
解:DATA SEGMENT;M DB 1 ,2,3,4,5,6,7,8,9,10;DB -1,-2,-3,-4,-5,-6,-7,-8,-9,-10;P DB 20DUP(?); N DB 20DUP(?) ;DATA ENDS ;CODE SEGMENT ;MAIN PROC FAR;START:PUSH DS;
MOV AX,0;PUSH AX;MOV AX,DATAMOV DS,AX;MOV AL,0;MOV SI OFFSET M ;MOV CX 20H; LOOP1: MOV BL,M[SI];CMP AL,M[SI ;JAE LOOP2 ; MOV N,BL;INC SI;CMP CX,20H;
JZ LOOP3;JMP LOOP1;LOOP2: DEC CX;MOV P, BL;INC SI;CMP CX,20H;JZ LOOP3;JMP LOOP1; LOOP3: MOV DX,OFFSET P;MOV AH,9;INT 21H;MOV DX,OFFSET N;MOV AH, 9;INT 21H ; RET ;MAIN ENDP;CODE ENDS ;END START;
20.编写程序,求字节变量BVAR中的压缩BCD数转换为二进制数,并存入原变量中。
解:DATA SEGMENT ;BVAR DW 53H,00H;DATA ENDS ;CODE SEGMENT ;MAIN PROC FAR;
ASSUME CS:CODE,DS:DATA;START:PUSH DS;MOV AX,0;PUSH DS,AX;MOV AX,DATA;MOV DS,AX; MOV AL,BYTE PTR SW;MOV AH,AL;AND AX,0F00FH;MOV CL,4;SHL AH,CL;MOV SW,AX;RET; MAIN ENDP;CODE ENDS ;END START;
编写汇编语言程序完成S=1+2+3+……+n(n=1000),即求n个自然数之和。把累加和送入sum单元保存。
DATAS SEGMENT;n DW 1000;sum DW ?;DATAS ENDS;CODES SEGMENT;
ASSUME CS:CODES,DS:DATAS;START: MOV AX,DATAS;MOV DS,AX;XOR AX,AX; MOV BX,AX;MOV CX,n;LOOPT: INC BX;ADD AX,BX;LOOP LOOPT;MOV sum,AX;MOV AH,4CH;INT 21H;CODES ENDS;END START;
16. 数据段中已定义了一个有n个字数据的数组M,试编写程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。
DATA SEGMENT;n EQU 6;M DW -66, 33, 55, -89, 28, 311;DW ?;DB ?;DATA ENDS;START:; MOV AX, DATA; MOV DS, AX; LEA BX, M; MOV CX, n; MOV SI, 0; XOR AX, AX; MOV [BX][2*n], AX;NEXT:; MOV AX, [BX][SI]; OR AX, AX; JNS L1;NEG AX;
L1: ; CMP [BX][2*n], AX; JG L2; MOV [BX][2*n], AX;MOV [BX][2*(n+1)], SI; L2:;INC SI;INC SI;DEC CX;JNZ NEXT;
18. 已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一程序,把既在A中又在B中出现的整数存放于数组C中。
DATA SEGMENT;A DW 11, -22, 33, 88, -55, -67, 306, 39, 55, -90;DW 28, 311, 65, 887, 911;B DW 18, 25, 31, 88, -55, -65, 188, 30, -15, 77;DW 252, 54, 102, 201, 87, -94, -22, -33, 911, 306;C DW 15 DUP(0);DATA ENDS;START:; MOV AX, DATA; MOV DS, AX;
MOV ES, AX;LEA SI, A;LEA BX, C;NEXT:;LEA DI, B;CLD ;MOV CX, 20; MOV AX, [SI];
REPNE SCASW ;JNZ NOTFOND;MOV [BX], AX; INC BX; INC BX;NOTFOND: ;INC SI;
INC SI;CMP SI,30; JL NEXT;