当前位置:城玮文档网 >述职报告 > 汇编实验报告

汇编实验报告

时间:2022-07-20 14:20:02 来源:网友投稿

  实验三 算术运算与代码转换程序设计 一、实验目的

 1)掌握算术运算程序的设计方法。

 2)掌握代码转换程序的设计方法。

 3)进一步掌握各种程序结构。

 4)熟练掌握和使用用 DEBUG 调试程序。

  二、实验内容

 1 1 )编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。

 2)编制程序实现二进制定点数与十进制数的 ASCII 码串之间转换,并将结果显示在屏幕上。

 3)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。

 4)写程序把从键盘输入的四位十六进制数转换为压缩的 BCD 码,并显示输出。

 5)编写一通用过程用来将十进制数(从键盘输入)转换为 P(从键盘输入)进制数。

 三、实验设备

 PC 机一台 四、实验步骤

 1) 按程序流程图编制实验程序。

 2) 输入源程序。

 3) 汇编、连接程序,执行程序,检查结果。

 4) 程序的执行可用 DEBUG 的 G 命令,也可用 T 命令单步跟踪执行。

  5) 用 D 命令检查执行结果。

 六、源程序 实验一 DATA SEGMENT

 NUM1 DB 22H,33H,44H,55H,66H,77H

 NUM1L DB 6H

 NUM2 DB 22H,22H,22H,22H

 NUM2L DB 4H

 OUTCOME1 DB 10H DUP(0)

 OUTCOME2 DB 10H DUP(0)

 N DB 0H

 DATA ENDS

 STACK1 SEGMENT PARA STACK

 DW 20H DUP(0)

 STACK1 ENDS

 CODE SEGMENT

 ASSUME CS:CODE,DS:DATA,SS:STACK1

 START:MOV AX,DATA

 MOV DS,AX

 MOV CH,0

 MOV SI,OFFSET NUM1

 MOV DI,OFFSET NUM2

 MOV AH,NUM1L

 MOV AL,NUM2L

 CMP AH,AL

 JAE CHA

 XCHG SI,DI

 XCHG AH,AL

 CHA:SUB AH,AL

  MOV CL,AL

 CLC

 MOV BX,OFFSET OUTCOME1 LOP1:MOV AL,[DI]

 PUSH CX

 MOV CL,[SI]

  ADC CL,AL

 MOV [BX],CL

 INC BX

 INC SI

 INC DI

 POP CX

 LOOP LOP1

 MOV CL,AH

 JCXZ LOP3

 LOP2:PUSH CX

 MOV CL, BYTE PTR [SI]

 ADC CL,0

 MOV [BX],CL

 POP CX

 INC BX

  INC SI

  LOOP LOP2

 LOP3:MOV CH,0

 MOV SI,OFFSET NUM1

 MOV DI,OFFSET NUM2

 MOV AH,NUM1L

 MOV AL,NUM2L

 CMP AH,AL

 JAE CHA1

 XCHG SI,DI

 XCHG AH,AL

 CHA1:SUB AH,AL

  MOV CL,AL

 CLC

 MOV BX,OFFSET OUTCOME2

 LOP11:MOV AL,[DI]

 PUSH CX

 MOV CL,[SI]

  SBB CL,AL

 MOV [BX],CL

 INC BX

 INC SI

 INC DI

 POP CX

 LOOP LOP11

 MOV CL,AH JCXZ LOP7

 LOP21:PUSH CX

 MOV CL, BYTE PTR [SI]

 SBB CL,0

 MOV [BX],CL

 POP CX

 INC BX

  INC SI

  LOOP LOP21

 LOP7:MOV DI,OFFSET OUTCOME1

 ADD DI,10H

 MOV CX,11H

 LOP4: MOV DL,[DI]

 DEC DI

 CMP N,0H

 JNE LOP5

 CMP DL,0H

 JE LOP9

 LOP5:PUSH DX

 PUSH CX

 MOV CL,4H

 SHR DL,CL

 POP CX

 CMP DL,9H

 JBE LOP6

 ADD DL,7H

 LOP6:ADD DL,30H

 MOV AH,2

 INT 21H

 MOV N,1H

 POP DX

 AND DX,0FH

 CMP DL,9H

 JBE LOP8

 ADD DL,7H

 LOP8:ADD DL,30H

 MOV AH,2

 INT 21H

 MOV DL,"H"

 MOV AH,2

 INT 21H

 LOP9:LOOP LOP4

 MOV N,0

 MOV DI,OFFSET OUTCOME2 ADD DI,10H

 MOV CX,11H

 LOP14: MOV DL,[DI]

 DEC DI

 CMP N,0H

 JNE LOP15

 CMP DL,0H

 JE LOP19

 LOP15:PUSH DX

 PUSH CX

 MOV CL,4H

 SHR DL,CL

 POP CX

 CMP DL,9H

 JBE LOP16

 ADD DL,7H

 LOP16:ADD DL,30H

 MOV AH,2

 INT 21H

 MOV N,1H

 POP DX

 AND DX,0FH

 CMP DL,9H

 JBE LOP18

 ADD DL,7H

 LOP18:ADD DL,30H

 MOV AH,2

 INT 21H

 MOV DL,"H"

 MOV AH,2

 INT 21H

 LOP19:LOOP LOP14

 MOV AH,4CH

 INT 21H

 CODE ENDS

 END START

 验 实验 2

 DATA SEGMENT

 TISHI1 DB "Please enter the first number:","$"

 TISHI2 DB "Please enter the second number:","$"

 JIA DB "+","$"

 JIAN DB "-","$"

 CHENG DB "*","$" CHU DB "/","$"

 DENG DB "=","$"

 YU DB "......","$"

 A DB 10

 B DW 10

 C DW 10000

 F DW 0H

 NUM1 DW 0H

 NUM2 DW 0H

 N DB 0H

 N1 DB 4H

 DATA ENDS

 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 AH,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:MOV 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

  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

 MOV 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

 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

  AND 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

 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

 MOV 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

 MOV 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 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 LOP164

  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,NUM1

 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

 INC 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

 实验五 输入输出程序设计

 一、实验目的

 1) 掌握输入输出程序的编写方法。

 2) 熟悉系统功能调用的方法。

 3) 熟悉动画程序的编写方法。

 二、实验内容

 1)在 CRT 上每隔一秒连续显示字符 0-9。

 编程提示

 为了使输出的字符之间有空格,在每一个循环中输出一个 0-9 的字符和一个空格。为了输出 0-9,置寄存器 BL 初值为 0,每循环一次使其增量。为了保证输出是十进制,增量后用DAA调整指令。由于输出为一位十进制数,用AND

 0FH指令屏蔽高 4 位。

 2)用系统功能调用将‘HELLO’由键盘输入,再从屏幕输出‘***HELLO***’。

 3)编制在屏幕上画线的子程序,调用该子程序画一矩形。

 4)编制字母下落一行的子程序,调用该子程序使字母从屏幕顶部下落到底部。

 5)创建一磁盘文件,保存从键盘输入的字符串。

 6)编写程序用设置系统时间,首先从键盘以十进制数形式输入时间,然后修改系统时间,并重新以十进制形式显示时间。

 7)编写程序将屏幕分割成格状,每一格涂上不同颜色,格数从键盘输入。

 8)编写程序在屏幕上显示菜单,输入相应菜单的序号后,选种该菜单项。

 三、实验设备

 PC 机一台

 四、实验步骤

  1) 按程序流程图编制实验程序。

  2) 输入源程序。

  3) 汇编、连接程序,执行程序,检查结果。

  4) 程序的执行可用 DEBUG 的 G 命令,也可用 T 命令单步跟踪执行。

 五、 源程序 实验五

 EXAM5-1

 STACK

  SEGMENT

 STACK

  DB

 1024

 DUP(0)

 STACK

  ENDS CODE

 SEGMENT

 ASSUME

 CS:CODE,SS:STACK START:

 MOV

  BL,

 0

  LP:

 MOV

  DL,

 20H

 MOV

  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

  LP CODE

 ENDS

 END

  START 执行程序 EXAM5-1·EXE,屏幕上依次循环显示一个数字一个空格:

 0

  1

 2

 3

 4

 5

 6

 7

 8

 9

 ……

  实验五

 EXAM5-2

 STACK

  SEGMENT

 STACK

  DB

 1024

 DUP(0)

 STACK

  ENDS DATA

 SEGMENT BUFF

 DB

 6,7

 DUP(?),‘$’ DATA

 ENDS INPUT

  MACRO

 BUFE

 MOV

 DX,

 OFFSET

 BUFE

 MOV

 AH,

 0AH

 INT

 21H

 ENDM PUTCHAR MACRO

 CHAR

  MOV

 DL,

 CHAR

  MOV

 AH,

 02H

  INT

 21H

  ENDM CODE

  SEGMENT

  ASSUME

 CS:CODE,DS:DATA,SS:STACK START:

 MOV

 AX, DATA

 MOV

 DS, AX

 INPUT

 BUFF

  ;读取字符串➝BUFF

  PUTCHAR

 0DH

 PUTCHAR

 0AH

 ;光标另起一行

 MOV

 CX, 0003H NEXT:PUTCHAR

 2AH

 LOOP

  NEXT

 MOV

 CL, BUFF+1

 SUB

 CH, CH

 MOV

 BX, OFFSET

 BUFF+2 BEGIN:

 MOV

 AL, [BX]

 PUTCHAR

 AL

 INC

 BX

 LOOP

  BEGIN

 MOV

 CX, 0003H NEXT1:

 PUTCHAR

 2AH

 LOOP

  NEXT1

  MOV

 AH, 4CH

 INT

 21H CODE

 ENDS

 END

  START 执行程序 EXAM5-2·EXE,输入 HELLO↙屏幕上显示结果:

 *** HELLO ***

 实验五

 EXAM5-5

 NAME

  EXAM6

  SSTACK

  SEGMENT

 STACK ’stack’

 DB

 1024 DUP(?)

  SSTACK

  ENDS

  DATA

  SEGMENT

 ASKNAME

 DB

 0DH,0AH,’Enter the’

 DB

 ’dest file name:$’

 ASKCONT

 DB

 0DH,0AH,’Enter the string’

 DB

 ’as file content:’0dh,0ah,’$’

 FILEBUF

 DB

 62,63DUP(?)

 HAND_D

 DW?

 MSGMER

  DB

 0DH,0AH,0AH

 DB

 ’Directory full’,0DH,0AH,’$’

  MSGWER

  DB

 0DH,0AH,0AH

 DB

  ’Disk full’,0DH,0AH,’$’

 MSGSUC

 DB

 0DH,0AH,0AH,

 DB

 ’Write file is Successful’

 DB

 0DH,0AH,’$’

 DATA

 ENDS

 DISPLY

  MACRO

 TEXT

 MOV

 DX,OFFSET

 TEXT

 MOV

 AH,09H

 INT

 21H

 ENDM

 CRHAND

 MACRO

 PATH,ATTR

 MOV

 DX,OFFSET PATH

  ;文件名

 MOV

 CL,ATTR

 ;文件属性

 XOR

 CH,CH

 MOV

 AH,3CH

 INT

 21H

 ENDM

 WRHAND

  MACRO

 HAND,BUFF,BYTE

 MOV

 BX,HAND

 MOV

 DX,OFFSET

 BUFF

 ADD

 DX,2

 MOV

 CL,BYTE

 XOR

 CH,CH

 MOV

 AH,40H

 INT

  21H

 ENDM

  CLHAND

  MACRO

 HAND

 MOV

 BX,HAND

 MOV

 AH,3EH

 INT

 21H

 ENDM

  CODE

  SEGMENT

  PROG

  PROC

 FAR

  ASSUME

 CS:CODE,DS:DATA,SS:SSTACK

  PUSH

 DS

  MOV

 AX,0

  PUSH

 AX

  MOV

 AX,DATA

  MOV

 DS,AX

 DISPLY

  ASKNAME

 ;提示输入文件名

  MOV

 DX,OFFSET

 FILEBUF

  MOV

 AH,0AH

  INT

  21H

  MOV

 DI,OFFSET

 FILEBUF[2]

  MOV

 BL,FILEBUF[1]

  XOR

 BH,BH

  MOV

 BYTE

 PTR[BX][DI],00H

 CRHAND

  FILEBUF[2],0

 ;创建并打开新文件

  JC

 CRTERR

  MOV

 HAND_D,AX

  ;存文件句柄

 DISPLY

 ASKCONT

  ;提示键入文件内容

  MOV

 DX,OFFSET

 FILEBUF

  MOV

 AH,0AH

  INT

 21H

  WRHAND

  HAND_D,FILEBUF,FILEBUF[1]

  JC

 WRITERR

 CLHAND

  HAND_D

 DISPLY

 MSGSUC

  JMP

 EXIT

 CRTERR:

 DISPLY

 MSGMER

  JMP

 EXIT

 WRITERR:DISPLY

 MSGWER

 EXIT:

  RET

  PROG

  ENDP

  CODE

  ENDS

  END

 PROG

相关热词搜索: 汇编 实验 报告