1、微机实验考试程序实验2:dispc MACRO char;定义宏,显示单字符 MOV DL,char MOV AH,2 INT 21h ENDMdata SEGMENT;定义数据段 x DB ?;定义变量x,保存第一个数 y DB ?;定义变量y,保存第二个数 C DB ?;定义变量c,保存运算符data ENDScode SEGMENT;定义代码段ASSUME CS:code,DS:datago: MOV AX,data MOV DS,AX;段地址填装 MOV AH,2 MOV BH,0 MOV DX,0 INT 10H MOV AH,9 MOV AL,20H MOV BL,12 MOV C
2、X,2000 INT 10HL1: CALL input;接收第一个数 MOV x,AL CALL input MOV BL,AL MOV AL,10 MUL x ADD AL,BL MOV x,ALL2: MOV AH,1;接收运算符 INT 21H CMP AL,/ JE L3 dispc 8;错误处理 dispc 20H dispc 8 JMP L2L3: MOV c,AL;保存运算符 CALL input;接收第二个数 MOV y,AL CALL input MOV BL,AL MOV AL,10 MUL y ADD AL,BL MOV y,AL dispc = JMP L10D1:
3、DISPC CLD2: DISPC BHD3: DISPC BL JMP L12D4: CMP CL,0 JNE D1D5: CMP BH,0 JNE D2 JMP D3 L10: MOV AL,x MOV AH,0 DIV y PUSH AX AAM OR AX,3030H CMP AH,0 JE L9 PUSH AX DISPC AH POP AXL9: DISPC AL POP AX CMP AH,0 JE L12 PUSH AX MOV CX,6L11: DISPC . LOOP L11 POP AX MOV AL,AH AAM OR AX,3030H MOV BX,AX JMP D5
4、L12: dispc 0DH;回车 dispc 0Ah;换行 JMP L1exit: MOV AH,4Ch INT 21H;退出input PROC;定义子程序,接收单字符i1: MOV AH,1 INT 21H;接收单字符 CMP AL,1Bh JE exit;按ESC键退出 CMP AL,0 JAE i3i2: dispc 8;错误处理 dispc 20H dispc 8 JMP i1i3: CMP AL, 9 JA i2 AND AL,0FH;转换成数值 RET;返回input ENDPcode ENDSEND go实验3:实验4:dispc MACRO char;定义宏,显示单字符 M
5、OV DL,char MOV AH,2 INT 21h ENDMdata SEGMENT;定义数据段 x DB ?;定义变量x,保存第一个数 y DB ?;定义变量y,保存第二个数 c DB ?;定义变量c,保存运算符data ENDScode SEGMENT;定义代码段ASSUME CS:code,DS:datago: MOV AX,data MOV DS,AX;段地址填装 MOV AH,2 MOV BH,0 MOV DX,0 INT 10H MOV AH,9 MOV AL,20H MOV BL,12 MOV CX,2000 INT 10HL1: CALL input;接收第一个数 MOV
6、x,AL CALL input MOV BL,AL MOV AL,10 MUL x ADD AL,BL MOV x,ALL2: MOV AH,1;接收运算符 INT 21H CMP AL,* JE L3 dispc 8;错误处理 dispc 20H dispc 8 JMP L2L3: MOV c,AL;保存运算符 CALL input;接收第二个数 MOV y,AL CALL input MOV BL,AL MOV AL,10 MUL y ADD AL,BL MOV y,AL dispc = CMP c,* JE L8L8: MOV AL,x MUL y MOV DX,0 MOV BX,100
7、0 DIV BX MOV CH,AL;保存千位到CH中。 MOV AX,DX MOV BL,100 DIV BL MOV CL,AL;保存百位到CL中。 OR CX,3030H MOV AL,AH AAM;(AH)=十位,(AL)=个位 OR AX,3030H;转换成字符 MOV BX,AX;保存十位到BH中,个位到BL中。 CMP CH,0 JE D4 DISPC CHD1: DISPC CLD2: DISPC BHD3: DISPC BL JMP L12D4: CMP CL,0 JNE D1D5: CMP BH,0 JNE D2 JMP D3 L12: dispc 0DH;回车 dispc
8、 0Ah;换行 JMP L1exit: MOV AH,4Ch INT 21H;退出input PROC;定义子程序,接收单字符i1: MOV AH,1 INT 21H;接收单字符 CMP AL,1Bh JE exit;按ESC键退出 CMP AL,0 JAE i3i2: dispc 8;错误处理 dispc 20H dispc 8 JMP i1i3: CMP AL, 9 JA i2 AND AL,0FH;转换成数值 RET;返回input ENDPcode ENDSEND go实验5:DISPC MACRO C;显示单字符 MOV DL,C MOV AH,2 INT 21H ENDM;定义宏D
9、ATA SEGMENT X DB 1234567890;定义变量X Y DB 1122334455;定义变量Y C EQU 10;计算长度 Z DB C+1 DUP(0);保存运算结果DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA;段说明GO: MOV AX,DATA MOV DS,AX MOV ES,AX;段地址填装 LEA SI ,X ;减法 LEA DI,Y;从最高位比较X,Y的大小 MOV CX,C CLDL5: LODSB ;(AL)=(DS):(SI) CMP AL,DI ; X Y 比较 JA L6;无符号比较 JB L7
10、 INC DI LOOP L5 DISPC 0 JMP L10L6: LEA SI,X+C-1 ;初始化地址指针SI到X尾 LEA BX,Y+C-1 ;初始化地址指针BX到Y尾 JMP L8L7: DISPC - LEA SI,Y+C-1 LEA BX,X+C-1L8: LEA DI,Z+C ;初始化地址指针DI到Z尾 STD ;地址减量变化 CLC ;CF=0 MOV CX,C ;置循环次数到CXL9: LODSB ;(AL)=(DS):(SI) SBB AL,BX ;X-Y AAS DEC BX ;由高位到低位 STOSB ;存串 LOOP L9 MOV CX,C+1 LEA BX,ZL1
11、1: MOV DL,BX OR DL,30H ;将数值转换成字符 MOV AH,2 INT 21H INC BX LOOP L11L10: MOV AH,7;等待语句 INT 21H MOV AH,4CH INT 21HCODE ENDSEND GO实验6:DISPC MACRO C;定义显示单字符的宏 MOV DL,CH MOV AH,2 INT 21H ENDMX_Y MACRO X,Y;定义置光标的宏 MOV AH,2 MOV BH,0 MOV DH,X MOV DL,Y INT 10H ENDMDISPS MACRO S;定义显示字符串的宏 MOV AH,9 LEA DX,S INT
12、21H ENDMDATA SEGMENT X DB 60 DUP(0),$;$为显示结束符 Y DB 60 DUP(0),$ DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAGO: MOV AX,DATA MOV DS,AX;填装段地址 MOV AH,2;清屏 MOV BH,0 MOV DX,0 INT 10H MOV AH,9 MOV AL,20H MOV BL,12H MOV CX,2000 INT 10H X_Y 6,0;置光标于6行0列 LEA BX,Y;初始化地址 LEA SI,X MOV CX,60;初始化长度L1: MOV AH,1 INT
13、 21H;接收单字符 CMP AL,A JAE L3;无符号比较,若大于等于转移L2: CALL ERROR;调用子程序 JMP L1L3: CMP AL,Z JBE L4 CMP AL,a JB L2 CMP AL,z JA L2;判断是否为字母 JMP L5L4:ADD AL,20H;将大写字母转换成小写字幕L5:MOV SI,AL;保存 INC SI;地址增量变化 LOOP L1 X_Y 10,0;置光标于10行0列 DISPS X;显示大小写转换后的字符串 MOV AH,7 INT 21H;等待 MOV AH,4CH INT 21H;退出ERROR PROCDISPC 8DISPC 2
14、0HDISPC 8;错误处理DISPC 7; 置响铃RET; 返回ERROR ENDPCODE ENDSEND GO实验7; DISPC MACRO C;定义显示单字符的宏 MOV DL,Ch MOV AH,2 INT 21H endm X_Y MACRO X,Y;定义置光标的宏 MOV AH,2 MOV BH,0 MOV DH,X MOV DL,Y INT 10H ENDMDISPS MACRO S;定义显示字符串的宏 MOV AH,9 LEA DX,S INT 21H ENDMDATA SEGMENT X DB 80 DUP(0),$;$为显示结束符 DATA ENDSCODE SEGME
15、NT ASSUME CS:CODE,DS:DATAGO: MOV AX,DATA MOV DS,AX;填装段地址 X_Y 8,0;置光标于8行0列 LEA SI,X;初始化地址 MOV CX,80;初始化长度L1: MOV AH,1 INT 21H;接收单字符 CMP AL,A JAE L3;无符号比较,若大于等于转移 cmp al,0 jae l4;大于等于转l4L2: CALL ERROR;调用子程序 JMP L1L3: CMP AL,Z JBE L6 CMP AL,a JB L2;低于转l2 CMP AL,z jbe l6 jmp l2l4 : cmp al,9 jbe l5 cmp a
16、l,A jb l2 jmp l3L5: and al,20h;数字转换为空格l6: MOV SI,AL;保存 INC SI;地址增量变化 LOOP L1 X_Y 10,0;置光标于10行0列 DISPS X;显示 转换后的字符串 MOV AH,7 INT 21H;等待 MOV AH,4CH INT 21H;退出error proc dispc 8 dispc 20h dispc 8;错误处理 dispc 7;置响铃 ret;返回error endp code ends end go实验8:DISPC MACRO C;定义显示单字符的宏 MOV DL,Ch MOV AH,2 INT 21H en
17、dmX_Y MACRO X,Y;定义置光标的宏 MOV AH,2 MOV BH,0 MOV DH,X MOV DL,Y INT 10H ENDMDISPS MACRO S;定义显示字符串的宏 MOV AH,9 LEA DX,S INT 21H ENDMDATA SEGMENT X DB 80 DUP(0),$;$为显示结束符 DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAGO: MOV AX,DATA MOV DS,AX;填装段地址MOV AH,2;清屏 MOV BH,0 MOV DX,0 INT 10H MOV AH,9 MOV AL,20H MOV
18、 BL,12H MOV CX,2000 INT 10H X_Y 7,0;置光标于6行0列 LEA SI,X;初始化地址 MOV CX,80;初始化长度L1: MOV AH,1 INT 21H;接收单字符 CMP AL,A JAE L3;无符号比较,若大于等于转移L2: CALL ERROR;调用子程序 JMP L1L3: CMP AL,z JA L2;判断是否为字母L4: MOV SI,AL;保存 INC SI;地址增量变化 LOOP L1 L5: LEA SI,X MOV CX,79;置长度 MOV DL,0L6: MOV AL,SI CMP AL,SI+1 JAE L7;大于或等于转L7
19、XCHG AL,SI+1;互换内容 MOV SI,AL MOV DL,1L7: INC SI LOOP L6 CMP DL,1 JE L5 X_Y 11,0;置光标于11行0列 DISPS X;显示最终的字符串 MOV AH,7 INT 21H;等待 MOV AH,4CH INT 21H;退出error proc dispc 8 dispc 20h dispc 8;错误处理 dispc 7;置响铃 ret;返回error endp code ends end go实验9:DISPC MACRO C;定义显示单字符的宏 MOV DL,Ch MOV AH,2 INT 21H endmX_Y MAC
20、RO X,Y;定义置光标的宏 MOV AH,2 MOV BH,0 MOV DH,X MOV DL,Y INT 10H ENDMDISPS MACRO S;定义显示字符串的宏 MOV AH,9 LEA DX,S INT 21H ENDMDATA SEGMENT X DB 80 DUP(0),$;$为显示结束符 DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAGO: MOV AX,DATA MOV DS,AX;填装段地址MOV AH,2;清屏 MOV BH,0 MOV DX,0 INT 10H MOV AH,9 MOV AL,20H MOV BL,12H M
21、OV CX,2000 INT 10H X_Y 6,0;置光标于6行0列 LEA SI,X;初始化地址 MOV CX,80;初始化长度L1: MOV AH,1 INT 21H;接收单字符 CMP AL,A JAE L3;无符号比较,若大于等于转移L2: CALL ERROR;调用子程序 JMP L1L3: CMP AL,z JA L2;判断是否为字母L4: MOV SI,AL;保存 INC SI;地址增量变化 LOOP L1 L5: LEA SI,X mov cx,79;置长度 mov DL,0L6: mov al,si cmp al,si+1 JBE L7 XCHG AL,SI+1;互换内容
22、MOV SI,AL MOV DL,1L7: INC SI loop L6 cmp DL,1 JE L5 X_Y 9,0;置光标于9行0列 DISPS X;显示最终的字符串 MOV AH,7 INT 21H;等待 MOV AH,4CH INT 21H;退出error proc dispc 8 dispc 20h dispc 8;错误处理 dispc 7;置响铃 ret;返回error endp code ends end go实验10:disps macro x mov ah,9 lea dx,x int 21h endmdata segmentbuffer db 80,?,81 dup(0)f
23、name db D:STRING.TXT,0d1 db Create paper file error,0dh,0ah,$d2 db Create file error,0ah,0dh,$d3 db Write file error,0ah,0dh,$d4 db Close file error,0ah,0dh,$d5 db Operate succeed ,0ah,0dh,$d6 db 0ah,0dh,$data endscode segmentassume cs:code,ds:datago: mov ax,data mov ds,ax mov ah,2 mov bh,0 mov dx,0
24、 int 10h mov al,20h mov ah,9 mov cx,2000 mov bl,12h int 10h;清屏 mov ah,2 mov bh,0 mov dh,5;置光标位置于5行 mov dl,0;置光标位置于0列 int 10h mov ah,0ah lea dx,buffer int 21h mov cl,buffer+1 mov ch,0 lea si,buffer+2l1: lodsb;取下一个源串中的值 cmp al,a jb m2 cmp al,zja m2 xor al,20h;将小写字母转换成大写字母 mov si-1,al;将转换后的字符存入SI-1中m2:
25、 loop l1 mov byte ptrsi,$ mov ah,2 mov bh,0 mov dh,7;将光标置于10行 mov dl,0;将光标置于0列 int 10h disps buffer+2 disps d6;显示转换后的字符l2: mov ah,5bh;建立新文件 mov cx,0 lea dx,fname int 21h jnc l3;成功转l3 disps d2;错误显示d2 jmp l6;无条件转l6l3:MOV BX,AXLEA DX,buffer+2mov cx,80mov ah,40h;文件写入 int 21h jnc l4;成功转l4 disps d3;错误显示d3
26、 jmp l6;无条件转l6l4: mov ah,3eh;关闭文件 int 21h jnc l5 disps d4 jmp l6l5: disps d5;显示D5l6: mov ah,7 int 21h mov ah,4ch int 21hcode endsend go实验11:disps macro x mov ah,9 lea dx,x int 21h endmdata segmentbuffer db 80,?,81 dup(0)fname db D:USER.TXT,0d1 db Create paper file error,0dh,0ah,$d2 db Create file er
27、ror,0ah,0dh,$d3 db Write file error,0ah,0dh,$d4 db Close file error,0ah,0dh,$d5 db Operate succeed ,0ah,0dh,$d6 db 0ah,0dh,$data endscode segmentassume cs:code,ds:datago: mov ax,data mov ds,ax mov ah,2 mov bh,0 mov dx,0 int 10h mov al,20h mov ah,9 mov cx,2000 mov bl,12h int 10h;清屏 mov ah,2 mov bh,0 mov dh,8;置光标位置于8行 mov dl,0;置光标位置于0列 int 10h mov ah,0ah lea dx,buffer int 21h mov cl,buffer+1 mov ch,0 lea si,buffer+2l1: lodsb;取下一个源串中的值 cmp a
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1