汇编实验报告(河北工业大学)_第1页
汇编实验报告(河北工业大学)_第2页
汇编实验报告(河北工业大学)_第3页
汇编实验报告(河北工业大学)_第4页
汇编实验报告(河北工业大学)_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一实验一 顺序与分支程序设计顺序与分支程序设计 一 、实验目的 1)掌握顺序程序设计方法。2) 掌握分支程序的结构及分支程序的设计,调试方法。 2) 学习数据传送及算术和逻辑运算指令的用法。 3) 熟悉在 PC 机上建立、汇编、连接、调试和运行汇编语言程序的过程。 二、实验内容 1) 有一字变量 BUF1 是以原码表示的有符号数,要求将其转换为反码和补码,分别存入 BUF2 和 BUF3 单元,并在屏幕上显示出来。源代码:DATA SEGMENTBUF1 DW 9348HBUF2 DW 4 DUP(0),0AH,0DH,$BUF3 DW 4 DUP(0),$DATA ENDSCODE SE

2、GMENT ASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATA MOV DS,AX MOV AX,BUF1 ADD AX,0 JS NEXT MOV BUF2,AX MOV BUF3,AX JMP EEE NEXT:AND AX,7FFFH NOT AX MOV BUF2,AX INC AXMOV BUF3,AX EEE:MOV CX,0004H MOV DI,OFFSET BUF2 MOV DX,DI ADD DI,03BBB:MOV AX,DX AND AX,000FH CMP AL,0AH JB QQQ ADD AL,07HQQQ:ADD AL,30H MOV

3、 DI,AL DEC DIPUSH CX MOV CL,04H SHR DX,CL POP CX LOOP BBB MOV CX,0004H MOV SI, OFFSET BUF3 MOV DX,SI ADD SI,03HCCC:MOV AX,DX AND AX,000FH CMP AL,0AH JB DDD ADD AL,07HDDD:ADD AL,30H MOV SI,AL DEC SI PUSH CX MOV CL,04H SHR DX,CL POP CX LOOP CCC MOV DX,OFFSET BUF2 MOV AH,09H INT 21H MOV DX,OFFSET BUF3

4、MOV AH,09H INT 21H MOV AH,4CH INT 21HCODE ENDSEND BEGIN运行结果:2)有两个两字节无符号数分别放在存储单元 A、B 起始的缓冲器中,求其和,结果放在 A 起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。 源代码:DATA SEGMENTA DB 34H,18H,2 DUP(0),$B DB 56H,83H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,A MOV BL,B ADD AL,BL MOV AH,A+1 MO

5、V BH,B+1 ADC AH,BH MOV A,AL MOV A+1, AH MOV CX, 0004H MOV DI,OFFSET A MOV DX, DI ADD DI,03 NEXT:MOV AX,DX AND AX,000FH CMP AL,0AH JB QQQ ADD AL,07H QQQ:ADD AL,30H MOV DI,AL DEC DI PUSH CX MOV CL,04 SHR DX,CL POP CX LOOP NEXTMOV DX,OFFSET AMOV AH,09HINT 21HMOV AH,4CHINT 21H CODE ENDSEND START运行结果:3)

6、在 BUF 和 BUF+1、BUF+2 单元分别放有一个无符号字节型数,编程序将其中最大数存入 MAX 单元,并在屏幕上显示。 源代码:STACK SEGMENT STACK DB 1024 DUP(0)STACK ENDSDATA SEGMENTBUF DB 70H,35H,1FHMAX DB 2 DUP(?),$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKBEGIN:MOV AX,DATA MOV DS,AX MOV AL,BUF CMP AL,BUF+1 JNB LP1 MOV AL,BUF+1 LP1:CMP AL,BUF+

7、2 JAE LP2 MOV AL,BUF+2 LP2:MOV CX,02H MOV DI,OFFSET MAX MOV DL,AL INC DI LP3:AND AL,0FH CMP AL,0AH JB LP4 ADD AL,07H LP4:ADD AL,30H MOV DI,AL DEC DI PUSH CX MOV CL,04 SHR DL,CL POP CX MOV AL,DL LOOP LP3 MOV DX,OFFSET MAX MOV AH,09H INT 21H MOV AH,4CH INT 21HCODE ENDS END BEGIN运行结果:4) 要求同上,只是比较的数为有符号

8、数。 源代码:STACK SEGMENT STACK DB 1024 DUP(0)STACK ENDSDATA SEGMENTBUF DB 98H,75H,32HMAX DB 2 DUP(?),$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKBEGIN:MOV AX,DATA MOV DS,AX MOV AL,BUF CMP AL,BUF+1 JG LP1 XCHG AL,BUF+1LP1: CMP AL,BUF+2 JG LP2XCHG AL,BUF+2LP2: MOV MAX,ALMOV CX,02HMOV DI,OFFSET M

9、AXMOV DL,DIINC DILP3: MOV AL,DLAND AL,0FHCMP AL,0AHJB LP4ADD AL,07HLP4: ADD AL,30HMOV DI,ALDEC DIPUSH CXMOV CL,04SHR DX,CLPOP CXLOOP LP3MOV DX,OFFSET MAXMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND BEGIN运行结果:6)6) 从键盘上接收一位十进制数 X,计算 Y 值,并以十六进制形式显示出来,Y 按下列公式计算。)6(2/)5()4(2)3(2222XXXXXXXXXXY源代码:DATA S

10、EGMENTX DB ?Y DB ?DATA ENDSSTACK SEGMENT STACKDW 20H DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXl0:MOV DL,0AHMOV AH,2INT 21HMOV DL,0DHINT 21HMOV AH,1INT 21HSUB AL,30HMOV X,ALCMP X,3JZ l1CMP X,4JZ l2CMP X,5JZ l3CMP X,6JZ l4CMP X,0JZ l6JMP l0l1:MOV AL,XMUL XADD AL,XMOV

11、 Y,ALJMP l5l2:MOV AL,XMUL XSUB AL,XSUB AL,XMOV Y,ALJMP l5l3:MOV AL,XMUL XMOV Y,ALJMP l5l4:MOV AL,XMUL XMOV BL,2DIV BLMOV Y,ALl5:MOV DL,0AHMOV AH,2INT 21HMOV DL,0DHINT 21HMOV DL,YMOV CL,4SHR DL,CLCMP DL,9JLE l7ADD DL,7l7:ADD DL,30HMOV AH,2INT 21HMOV DL,YAND DL,0FHCMP DL,9JLE l8ADD DL,7l8:ADD DL,30HMO

12、V AH,2INT 21HJMP l0l6:MOV AH,4CHINT 21HCODE ENDSEND START运行结果:7)7) 从键盘上接收两个一位十六进制数 X 和 Y,然后再输入一个 A-D 之间的一个字符,按下列要求计算。源代码:DATAS SEGMENT X DB ?Y DB ?Z DB ?S DB ? DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXL0:MOV AH,1INT 21HSUB AL,30HMOV X,ALMOV DL,0AHMOV AH,2INT 21HMOV

13、DL,0DHINT 21HMOV AH,1INT 21HSUB AL,30HMOV Y,ALMOV DL,0AHMOV AH,2INT 21HMOV DL,0DHINT 21HMOV AH,1INT 21HMOV Z,ALCMP Z,AJZ L1CMP Z,BJZ L2CMP Z,CJZ L3CMP Z,DJZ L4CMP Z,QJZ L7L1:MOV AL,XADD AL,YMOV S,ALJMP L6L2:MOV AL,XSUB AL,YMOV S,ALCMP S,0JS L5JNS L6L3:MOV AL,XMUL YMOV S,ALJMP L6L4:MOV AL,XMOV BL,YMO

14、V AH,0DIV BLMOV S,ALJMP L6L5:NEG SJMP L6L6:MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH INT 21H MOV DL,S L9:ADD DL,30H MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH INT 21H JMP L0 L7:MOV AH,4CH INT 21H CODES ENDSEND START运行结果:实验二实验二 循环与子程序程序设计循环与子程序程序设计 一、实验目的 1) 加深对循环结构的理解。 2)掌握循环程序的设计方法。3)学习子程

15、序的定义和调用方法。 4)掌握子程序、子程序的嵌套、递归子程序的结构。 5) 掌握子程序设计、编制及调试。 6) 熟练掌握 DEBUG 的常用命令,学会用 DEBUG 调试程序。 二、实验内容 1) 编制程序计算 S=1+23+34+45+N(N+1)+直到 N(N+1)大于 200 为止,并将结果由屏幕上显示出来。源代码:DATA SEGMENTBUF DBS=1+2*3+3*4+4*5+N(N+1)+=,$RES DW 4 DUP(0),$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS, AX MO

16、V DX, OFFSET BUF MOV AH, 09H INT 21H MOV DX, 1 MOV BL, 2NEXT: MOV AL, BL INC BL MUL BL ADD DX, AX CMP AX, 200 JNA NEXT MOV CX, 0004H MOV DI, OFFSET RES ADD DI, 03HNEXT1:MOV AX, DX AND AX, 000FH CMP AL, 0AH JB NEXT2 ADD AL, 07NEXT2:ADD AL, 30H MOV DI,AL DEC DI PUSH CX MOV CL,04 SHR DX,CL POP CX LOOP

17、NEXT1 MOV DX, OFFSET RES MOV AH, 09H INT 21H MOV AH, 4CH INT 21HCODE ENDSEND START运行结果:2)将从 3000H 内存单元开始的 100 个字节存储单元全部清 0。源代码:DATA SEGMENTORG 3000HX DB 100 DUP(?)DATA ENDSSTACK SEGMENT STACKDB 10 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXLEA SI,XMOV CX,100

18、LP:AND BYTE PTRSI,00HINC SILOOP LPMOV AH,4CHINT 21HCODE ENDSEND START运行结果:3)编制在屏幕上显示九九乘法表的程序。源代码:DATA SEGMENT X DB 1 Y DB 1 Z DB 1 S DB ? YS DB ? TEN DB 10 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX ;装入段寄存器 L1:MOV AL,X MUL Y MOV Z,AL CALL SC INC Y MOV BL,X CMP Y,BL JA

19、L2 JMP L1 ;内循环 L2:INC X CMP X,9H JA L3 MOV Y,1 MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H ;输出回车换行 JMP L1 ;外循环 L3:MOV AH,4CH INT 21H SC PROC ;输出子程序 ADD Y,30H MOV DL,Y MOV AH,02H INT 21H ;输出 Y MOV DL,X MOV AH,02H INT 21H ;输出 X ADD X,30H MOV DL,X MOV AH,02H INT 21H ;输出 X MOV DL,= MOV A

20、H,02H INT 21H ;输出= MOV AX,0 MOV AL,Z DIV TEN MOV S,AL MOV YS,AH cmp s,1 jb l10 ADD S,30H MOV DL,S MOV AH,2 INT 21H;输出高位结果 ADD YS,30H MOV DL,YS MOV AH,2 INT 21H;输出低位结果 ;输出 Z MOV DL, MOV AH,02H INT 21H ;输出一个空格 jmp l11 l10:ADD YS,30H MOV DL,YS MOV AH,2 INT 21H;输出低位结果 MOV DL, MOV AH,02H INT 21H ;输出一个空格

21、MOV DL, MOV AH,02H INT 21H l11:MOV AX,0 MOV AL,X-30H SUB X,30H SUB Y,30H RET SC ENDP CODE ENDS END START 运行结果:4)编制在屏幕上显示用*组成的三角形的程序源代码:DATA SEGMENT N DB ? NN DB ? I DB 1DATA ENDSSTACK SEGMENT DW 20 DUP(?)STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AH,1 IN

22、T 21H ;输入一个数存入 AL MOV N,AL ;输入的数存入 N SUB N,30H MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H L10: MOV AL,N SUB AL,I MOV NN,AL L2: CMP NN,1 JB L1 MOV DL, MOV AH,02H INT 21H DEC NN JMP L2 ;循环输出 N-I 个空 格 L1: MOV BL,I SHL BL,1 SUB BL,1 ;(IX2)-1 L14: MOV DL,* MOV AH,02H INT 21H DEC BL CMP BL,1

23、JB L3 JMP L14 L3: MOV AL,N SUB AL,I MOV NN,AL L4: CMP NN,1 JB L5 MOV DL, MOV AH,02H INT 21H DEC NN JMP L4 ;循环输出 N-I 个空格 L5:MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H ;输出回车换行 INC I MOV BL,I CMP BL,N JA L6 MOV BL,0 JMP L10 L6:MOV AH,4CH INT 21H CODE ENDS END START运行结果:5)设有五个字数据存放在以 BUF 为首

24、地址的内存单元中,要求采用调用多个字数据相加的子程序方法编程,和的低位字放在 RESULT 单元,和的高位字放在 RESULT+2 单元,并将结果显示在屏幕上。源代码:STACK SEGMENT STACK DB 1024 DUP(0)STACK ENDSDATA SEGMENTBUF DW 0F101H,110DH,52H,100H,456HCOUNT =($-BUF)/2RESULT DW 4 DUP(?),$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKWDADD PROC PUSH DI MOV AX, 0 MOV DX, 0

25、 MOV DI, OFFSET BUFNEXT2: ADD AX, DI JNC NEXT1 INC DXNEXT1: ADD DI, 2 LOOP NEXT2 POP DI RET WDADD ENDP SHOW PROC PUSH CX PUSH DI MOV CX, 04H MOV DI, OFFSET RESULT MOV BX, AX ADD DI, 07HBBB: MOV AX, BX AND AX, 000FH CMP AL, 0AH JB QQQ ADD AL, 07HQQQ: ADD AL, 30H MOV DI, AL DEC DI PUSH CX MOV CL, 04 S

26、HR BX, CL POP CX LOOP BBB MOV CX, 0004HCCC: MOV AX, DX AND AX, 000FH CMP AL, 0AH JB DDD ADD AL, 07HDDD: ADD AL, 30H MOV DI, AL DEC DI PUSH CX MOV CL, 04H SHR DX, CL POP CX LOOP CCC POP DI POP CX RET SHOW ENDPBEGIN: MOV AX, DATA MOV DS, AX MOV CX, COUNT CALL WDADD CALL SHOW MOV DX, OFFSET RESULT MOV

27、AH, 09H INT 21H MOV AH, 4CH INT 21HCODE ENDS END BEGIN运行结果:实验三实验三 算术运算与代码转换程序设计一、实验目的 1)掌握算术运算程序的设计方法。2)掌握代码转换程序的设计方法。 3)进一步掌握各种程序结构。 4)熟练掌握和使用用 DEBUG 调试程序。 二、实验内容1 1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。源代码:DATA SEGMENT TABLE DW L1,L2,L3,L4,L5 BUF DB 32H,20H,12H NUM DB 04H DATA ENDS STACK1 SEGMENT PA

28、RA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA MOV DS,AX MOV BL,BUF MOV BH,BUF+1 MOV CL,BUF+2 CMP BL,BH JA L1 CMP BH,CL JA L2 JMP L3 L1:CMP BL,CL JA L4 JMP L3 L2:MOV DL,BUF+1 AND DL,0F0H SAR DL,1 SAR DL,1 SAR DL,1 SAR DL,1 ADD DL,30H MOV AH,02H INT

29、 21H MOV DL,BUF+1 AND DL,0FH ADD DL,30H MOV AH,02H INT 21H JMP L5 L3:MOV DL,BUF+2 AND DL,0F0H SAR DL,1 SAR DL,1 SAR DL,1 SAR DL,1 ADD DL,30H MOV AH,02H INT 21H MOV DL,BUF+2 AND DL,0FH ADD DL,30H MOV AH,02H INT 21H JMP L5 L4:MOV DL,BUF AND DL,0F0H SAR DL,1 SAR DL,1 SAR DL,1 SAR DL,1 ADD DL,30H MOV AH

30、,02H INT 21H MOV DL,BUF AND DL,0FH ADD DL,30H MOV AH,02H INT 21H JMP L5 L5:MOV AH,4CH INT 21H CODE ENDS END START 运行结果:2)编制程序实现二进制定点数与十进制数的 ASCII 码串之间转换,并将结果显示在屏幕上。源代码:DATA SEGMENT BIN1 DW 1101111011010101B DEC1 DB 6 DUP(0)DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP(0)STACK1 ENDSCODE SEGMENT ASSUM

31、E CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATA MOV DS,AX MOV DX,BIN1 MOV DI,OFFSET DEC1 MOV CX,0 LOP1:PUSH CX MOV AX,DX MOV DX,0 MOV CX,10 DIV CX XCHG AX,DX ADD AL,30H MOV DI,AL INC DI POP CX INC CX CMP DX,0 JNZ LOP1 DEC2:DEC DI MOV AL,DI MOV DL,AL MOV AH,2 INT 21H LOOP DEC2 MOV AH,4CH INT 21HCODE END

32、SEND START运行结果:3)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。源代码:DATA SEGMENTTISHI1 DB PLEASE ENTER THE FIRST NUMBER:,$TISHI2 DB PLEASE ENTER THE FIRST NUMBER:,$JIA DB + $JIAN DB - $CHENG DB * $CHU DB / $DENG DB = $YU DB . $A DB 10B DW 10C DW 10000F DW 0HNUM1 DW 0H NUM2 DW 0H N DB 0H N1 DB 4H DATA END

33、S STACK1 SEGMENT STACK DW 30H DUP(0) STACK1 ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET TISHI1 MOV AH,09H INT 21H LOOP2:MOV AX,NUM1 MUL B MOV BX,AX MOV AH,1 INT 21H CMP AL,0DH JE LOP1 MOV NUM1,BX MOV AH,0 SUB AL,30H ADD NUM1,AX JMP LOOP2 LOP1:MOV DL,0AH MOV A

34、H,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV DX,OFFSET TISHI2 MOV AH,09H INT 21H LOOP1:MOV AX,NUM2 MUL B MOV BX,AX MOV AH,1 INT 21H CMP AL,0DH JE LOP3 MOV NUM2,BX MOV AH,0 SUB AL,30H ADD NUM2,AX JMP LOOP1 LOP3:MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV N,0 MOV DX,NUM1 MOV F,DX LOP6:M

35、OV DX,0H MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOP7 MOV F,AX JMP LOP6 LOP7:MOV CL,N MOV CH,0 LOP16:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOP16 MOV DX,NUM2 MOV F,DX MOV N,0 MOV DX,OFFSET JIA MOV AH,09H INT 21H LOOOP6:MOV DX,0H MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOOOP7 MOV F,AX JMP LOOOP6

36、 LOOOP7:MOV CL,N MOV CH,0 LOOOP16:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOOOP16 MOV DX,OFFSET DENG MOV AH,09H INT 21H MOV N,0 LOOP3:MOV AX,NUM1 ADD AX,NUM2 MOV F,AX LOOP4:MOV DX,0H MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOOP5 MOV F,AX JMP LOOP4 LOOP5:MOV CL,N MOV CH,0 LOOP0:POP DX ADD DX,30H MO

37、V AH,2 INT 21H LOOP LOOP0 MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV N,0 MOV DX,NUM1 MOV F,DX LOP61:MOV DX,0H MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOP71 MOV F,AX JMP LOP61 LOP71:MOV CL,N MOV CH,0 LOP161:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOP161 MOV DX,NUM2 MOV F,DX MOV N,0

38、 MOV DX,OFFSET JIAN MOV AH,09H INT 21H LOOOP61:MOV DX,0H MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOOOP71 MOV F,AX JMP LOOOP61 LOOOP71:MOV CL,N MOV CH,0 LOOOP161:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOOOP161 MOV DX,OFFSET DENG MOV AH,09H INT 21H MOV N,0 MOV N,0 MOV AX,NUM1 SUB AX,NUM2 MOV F,AX A

39、ND AX,10000000B CMP AX,10000000B JNE LOOP6 NEG F LOOP6:MOV DX,0 MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOOP7 MOV F,AX JMP LOOP6 LOOP7:MOV CL,N MOV CH,0 LOOP16:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOOP16 MOV DL,0AH 输出换行和回车MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV N,0 MOV DX,NUM1 MOV F,DX

40、 LOP62:MOV DX,0H MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOP72 MOV F,AX JMP LOP62 LOP72:MOV CL,N MOV CH,0 LOP162:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOP162 MOV DX,NUM2 MOV F,DX MOV N,0 MOV DX,OFFSET CHENG MOV AH,09H INT 21H LOOOP62:MOV DX,0H MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOOOP72 MO

41、V F,AX JMP LOOOP62 LOOOP72:MOV CL,N MOV CH,0 LOOOP162:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOOOP162 MOV DX,OFFSET DENG MOV AH,09H INT 21H MOV N,0 MOV AX,NUM1 MUL NUM2 DIV C PUSH DX MOV F,AX MOV N,0 LOOP8:MOV DX,0 MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOOP9 MOV F,AX JMP LOOP8 LOOP9:MOV CL,N MO

42、V CH,0 LOOP17:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOOP17 MOV N,0 POP F LOOP10:MOV DX,0H MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOOP11 MOV F,AX JMP LOOP10 LOOP11:MOV AL,N CMP AL,4H JE LOOP20 MOV AL,4H SUB AL,N MOV CL,AL MOV CH,0 LOOP19:MOV DX,0 MOV AH,2 INT 21H LOOP LOOP19 LOOP20:MOV CL,N MOV

43、CH,0 LOOP18:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOOP18 MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV N,0 MOV DX,NUM1 MOV F,DX LOP64:MOV DX,0H MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOP74 MOV F,AX JMP LOP64 LOP74:MOV CL,N MOV CH,0 LOP164:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LO

44、P164 MOV DX,NUM2 MOV F,DX MOV N,0 MOV DX,OFFSET chu MOV AH,09H INT 21H LOOOP64:MOV DX,0H MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOOOP74 MOV F,AX JMP LOOOP64 LOOOP74:MOV CL,N MOV CH,0 LOOOP164:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOOOP164 MOV DX,OFFSET DENG MOV AH,09H INT 21H MOV N,0 MOV AX,NUM

45、1 MOV DX,0 DIV NUM2 PUSH DX MOV F,AX MOV N,0 LOOP15:MOV DX,0 MOV AX,F DIV B PUSH DX INC N CMP AX,0H JE LOOP12 MOV F,AX JMP LOOP15 LOOP12:MOV CL,N MOV CH,0 LOOP21:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOOP21 MOV DX,OFFSET YU MOV AH,09H INT 21H POP F MOV N,0 LOOP13:MOV DX,0 MOV AX,F DIV B PUSH DX IN

46、C N CMP AX,0H JE LOOP14 MOV F,AX JMP LOOP13 LOOP14:MOV CL,N MOV CH,0H LOOP22:POP DX ADD DX,30H MOV AH,2 INT 21H LOOP LOOP22 MOV AH,4CH INT 21H CODES ENDS END START 运行结果:4)写程序把从键盘输入的四位十六进制数转换为压缩的 BCD 码,并显示输出。源代码:STACK SEGMENT STACK DB 16 DUP(0) STACK ENDS DATA SEGMENT MSG1 DB 0AH,0DH,PLEASE INPUT AGA

47、IN!,$ MSG2 DB 0AH,0DH,BCD CODE:,$ MSG3 DB PLEASE INPUT YOU DATA:,0AH,0DH,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MSG3 MOV AH,09H INT 21H MOV AH,01H MOV CX,4 INPUT: MOV AH,01H 输入字符 INT 21H CMP AL,30H JB REINPUT CMP AL,39H JA ZIMU SUB AL,30H

48、JMP OK ZIMU: AND AL,11011111B 字母转换: CMP AL,41H JB REINPUT CMP AL,46H JA REINPUT SUB AL,37H OK: MOV AH,0 PUSH CX MOV CL,4 SHL BX,CL ADD BX,AX POP CX LOOP INPUT MOV AX,DATA MOV DS,AX MOV DX,OFFSET MSG2 MOV AH,09H INT 21H BCD: MOV AX,BX MOV BX,10 MOV CX,0 S1: MOV DX,0 DIV BX PUSH DX INC CX CMP AX,0 JA

49、S1 MOV BX,2 S2: POP AX PUSH CX MOV CX,4 S2_0: MOV DX,0 DIV BX PUSH DX LOOP S2_0 MOV CX,4 MOV AH,02H S2_1: POP DX ADD DL,30H INT 21H LOOP S2_1 MOV DL,20H INT 21H POP CX LOOP S2 JMP OK2 REINPUT: MOV AX,DATA MOV DS,AX MOV DX,0 MOV AH,09H INT 21H JMP START OK2: MOV AX,4C00H INT 21H CODE ENDSEND START 运行

50、结果:5)编写一通用过程用来将十进制数(从键盘输入)转换为 P(从键盘输入)进制数。源代码:DATA SEGMENT STRING1 DB INPUT YOUR M=,$ STRING2 DB INPUT YOUR P=,$ RE DB 8 DUP(30H) DATA ENDS STACK1 SEGMENT STACK DW 60H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET STRING1 MOV AH,09H INT 21

51、H MOV AH,01H INT 21H AND AX,0000FH MOV DL,10 MUL DL MOV BX,AX MOV AH,01H INT 21H AND AL,0FH CLC ADD BL,AL ADC BH,0 MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH INT 21H MOV DX,OFFSET STRING2 MOV AH,09H INT 21H MOV AH,01H INT 21H MOV DH,AL SUB DH,30H MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH INT 21H MOV AX

52、,BX MOV BX,0001H MOV DI,OFFSET RE LOP1: DIV DH ADD AH,30H MOV DI,AH CBW ADD DI,BX CMP AL,0 JA LOP1 MOV CX,08H MOV DI,OFFSET RE CLC ADC DI,CX LOP2: SUB DI,BX MOV DL,DI MOV AH,02H INT 21H LOOP LOP2 MOV AH,4CH INT 21H CODE ENDS END START运行结果:实验五实验五 输入输出程序设计输入输出程序设计 一、实验目的 1) 掌握输入输出程序的编写方法。 2) 熟悉系统功能调用的

53、方法。 3) 熟悉动画程序的编写方法。 二、实验内容 1)在 CRT 上每隔一秒连续显示字符 09。 编程提示 为了使输出的字符之间有空格,在每一个循环中输出一个 09 的字符和一个空格。为了输出 09,置寄存器 BL 初值为 0,每循环一次使其增量。为了保证输出是十进制,增量后用 DAA 调整指令。由于输出为一位十进制数,用 AND 0FH 指令屏蔽高 4 位。 源代码:STACK SEGMENT STACK DB 1024 DUP(0)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART:MOV BL,0 LP:MOV DL,20H MOV

54、 AH,2 INT 21H MOV AL,BL ADD AL,0 DAA AND AL,0FH MOV BL,AL PUSH BX OR AL,30H MOV DL,AL MOV AH,2 INT 21H MOV BX,3E8H LP2:MOV CX,176H,延时 1ms LP1:PUSHF POPF LOOP LP1 DEC BX JNZ LP2 POP BX INC BL JMP LPCODE ENDS END START运行结果:2)用系统功能调用将HELLO由键盘输入,再从屏幕输出*HELLO* 。 源代码:STACK SEGMENT STACK DB 1024 DUP(0)STAC

55、K ENDSDATA SEGMENTBUFF DB 6,7 DUP(?),$DATA ENDSINPUT MACRO BUFE MOV DX,OFFSET BUFE MOV AH,0AH INT 21H ENDMPUTCHAR MACRO CHAR MOV DL,CHAR MOV AH,02H INT 21H ENDMCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX INPUT BUFF ;读取字符串 BUFF PUTCHAR 0DH PUTCHAR 0AH ;光标另起一行 MOV CX,0003HN

56、EXT:PUTCHAR 2AH LOOP NEXT MOV CL,BUFF+1 SUB CH,CH MOV BX,OFFSET BUFF+2BEGIN:MOV AL,BX PUTCHAR AL INC BX LOOP BEGIN MOV CX,0003HNEXT1:PUTCHAR 2AH LOOP NEXT1 MOV AH,4CH INT 21HCODE ENDS END START运行结果:3)编制在屏幕上画线的子程序,调用该子程序画一矩形。源代码:DATASEGMENTCOLDw 50ROWDw 50LENGTH Dw 100COLORDb2DATAENDSSTACK1SEGMENT ST

57、ACKDW 20 DUP(0)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOV DS,AXMOV AH,0;设置显示方式MOV AL,12HINT 10HMOV DX,ROW;画上面横线MOV CX,COLCALLPROC_XMOV DX,ROW;画左边竖线MOV CX,COLCALLPROC_YMOV DX,ROW ;画右边竖线MOV CX,COLADD CX,LENGTHCALLPROC_YMOV DX,ROW ;画下面横线MOV CX,COLADD DX,LENGTHCALL PROC_XMOV

58、 AH,1;输入INT 21HMOV AH,0MOV AL,3 INT 10HMOV AH,4CH ;结束INT 21H PROC_XPROC;画横线子程序MOV BP,LENGTH;线长LOP1:MOVBH,0 ;置页号INC CX;修改列号MOV AL,COLOR;取象素值MOV AH,0CH;写象素INT 10HDEC BPJNE LOP1RETPROC_X ENDPPROC_Y PROC;划竖线子程序MOV BP,LENGTHLOP2:MOV BH,0INC DX;修改行号MOV AL,COLOR MOV AH,0CH INT 10HDEC BPJNE LOP2RETPROC_YEND

59、PCODEENDSEND START运行结果:4)编制字母下落一行的子程序,调用该子程序使字母从屏幕顶部下落到底部。源代码:DATA SEGMENTTIMER DW 18COLOR DB 00000100BSTR1 DB NICE TO MEET YOU!DATA ENDSSTACK1 SEGMENT STACKDW 100 DUP(?)STACK1 ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK1,ES:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AH,0FHINT 10HPUSH AX MOV AL,

60、03HMOV AH,00HINT 10HMOV AH,13HMOV AL,00HMOV BL,COLORMOV BP,OFFSET STR1MOV DH,10MOV DL,20MOV CX,5INT 10HMOV CX,25LOP1:PUSH CXCALL DOWN1MOV AH,1 MOV CX,0 MOV DX,0 INT 1AHDELAY: MOV AH,0 INT 1AH CMP DX,TIMER JB DELAYPOP CXLOOP LOP1POP AXMOV AH,0INT 10HMOV AH,4CHINT 21HDOWN1 PROCMOV AH,07HMOV AL,1MOV BH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论