西安交通大学汇编实验报告-石磊

2022-05-24 05:48:22   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。下载word有问题请添加QQ:admin处理,感谢您的支持与谅解。点击这里给我发消息

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《西安交通大学汇编实验报告-石磊》,欢迎阅读!
石磊,西安交通大学,汇编,实验,报告



西安交通大学







汇编语言实验报告









计算机26

石磊 2120505140






80X86汇编语言程序设计课内实验报告



1.熟悉汇编语言的实验环境(学校机房:集成编译环境;个人电脑:emu8086了解各项功能的调用。

2.编译课本上例题、习题某些程序,利用debug调试。

实验一 数据段中已定义了一个有n个字数据的数组M试编写一程序求出M绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。 石磊

学号

2120505140

计算机26

实验时间

2014428

实验二 设计一程序,接收从键盘输入的数字(1~5),并对每个数字的输入次数进行计数,计数结果存放在以COUNT为首地址的数组中。(最好能将计数结果打印出来)

3.调试并优化实验一程序。

4.调试并优化实验二程序。

5.观看老师当堂演示debug的使用,请老师验收实验结果。 6.完成实验。






1.实验一结果

1.结果显示









2.结果分析

程序执行完成后最大的数是-7的绝对值7,符合M数组中最大值; 并且位置在M+2,符合M数组中最大元素位置。 2 实验二结果

输入结果





输出结果



结果分析

输入待统计数字后,输入任意大于5的数字则输出统计结果。1的数目是2个,2的数目是2个,3的数目是1个。符合实际数目。






1 可以考虑增加实验时间。汇编语言的风格、思路与我们之前学习过的高级语

言有所不同,熟悉编程环境需要时间。感觉上机期间,同时需要熟悉环境、设计算法、编写程序和调试程序是很有压力的。所以可以考虑在正式编程前增加一次实验。

2 可以考虑设计一些更加有趣的题目。本次需要编写的两个程序有些枯燥,不

妨再生动些。

3 是够可以考虑使用类似C语言学习时的moodle系统,可以同时减轻老师和

学生的负担。而且实现了在寝室中可以随时编写程序。避免到上机时猝不及防。






1. 实验一程序:

assume ds:data, cs:code



data segment

count dw 7 array dw 1, 2, -7, 4, -5, 6, 3 maxv dw 0 maxd dw 0 data ends

code segment start:

mov ax, data mov ds, ax

mov cx, count

mov bx, offset array

mov ax, 0 loop1:

mov dx, [bx] cmp dx, 0 jg nneg

neg dx ;取反 nneg:

cmp dx, ax jl nupdate mov ax, dx mov dx, [bx] mov maxv, dx mov maxd, bx nupdate: add bx, 2 loop loop1

mov ax, 4c00h int 21h

code ends

end start



2. 实验二程序:



COUNT db 5 dup (0) DATAS ENDS CODES SEGMENT

ASSUME CS:CODES,DS:DATAS START:






备注

DATAS SEGMENT COUNT db 5 dup (0) DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS START: push ds sub ax,ax push ax

MOV AX,DATAS MOV DS,AX next:

mov ah,01h int 21h cmp al,'1' jz bijiao1 cmp al,'2' jz bijiao2 cmp al,'3' jz bijiao3 cmp al,'4' jz bijiao4 cmp al,'5' jz bijiao5 jmp exit bijiao1:

mov cl,COUNT add cl,1

mov COUNT[0],cl jmp next bijiao2:

mov bx,1

mov cl,COUNT[bx] add cl,1

mov COUNT[bx],cl jmp next bijiao3:

mov bx,2

mov cl,COUNT[bx] add cl,1

mov COUNT[bx],cl jmp next




备注

bijiao4:

mov bx,3

mov cl,COUNT[bx] add cl,1

mov COUNT[bx],cl jmp next bijiao5:

mov bx,4

mov cl,COUNT[bx] add cl,1

mov COUNT[bx],cl jmp next exit:

mov dl,COUNT[0] add dl,30h mov ah,02 int 21h

mov dl,COUNT[1] add dl,30h mov ah,02 int 21h

mov dl,COUNT[2] add dl,30h mov ah,02 int 21h

mov dl,COUNT[3] add dl,30h mov ah,02

mov dl,COUNT[4] add dl,30h mov ah,02 int 21h int 21h mov ah,4ch int 21h CODES ENDS END START








80X86汇编语言程序设计课内实验报告

班级 姓名

实验内容概述

计算机26

实验时间

2014-5-19

石磊 学号 2120505140

实验一 子程序及 DOS/BIOS 调用程序设计 6.9

设有10 个学生的成绩分别是76,69,84,90,73,88,99,63,100 80 分。 试编制一个子程序统计60~69 分,70~79 分,80~89 分,90~99 分和100 分的人数并分别存放到S6, S7, S8, S9 S10 元中。

实验二 高级汇编语言技术 7.11

试编写一段程序,完成以下功能:若给定名为X 的字符串长度大5 时,下列指令将汇编10 次。

ADD AX, AX

(要求:使用条件汇编,编译过程中生成LST 文件,查看宏展开情况)

实验三 输入输出程序设计

编写程序,使类型1CH 的中断向量指向中断处理程序COUNTCOUNT 统计1CH 中断次数并存入单元M 中。

实验四 BIOS DOS 中断 9.2

编写一个程序,接收从键盘输入的10 个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT 指令变换)入内存缓冲区BUFFER 加密表为:

输入数字: 0123456789 密码数字: 7591368024




实验步骤 第一题:

在主程序中调用子函数count完成将每个在数组mark里的成绩一一取出,分别判定其大小而放入统计60~69 分,70~79 分,80~89 分,90~99 分和100 分的人数的S6, S7, S8, S9 S10 元中,在屏幕上依次显示出S6, S7, S8, S9 S10中的数。

第二题:

使用条件汇编和重复汇编。判断当给定名为X 的字符串长度大5 时,重复 ADD AX, AX 10 次。

第三题:

使类型1CH 的中断向量指向中断处理程序COUNTCOUNT 1CH 中断每调用一次则给num加一,计算出num最后的值后存入单元M 中。 第四题:

接收从键盘输入的10 个十进制数字,输入回车符则停止输入, bx里存入数组7591368024的符号地址,每键入一个数后都存入al调用xlat使得al<al+bx al中为译码后的数,存入string并一次输出所有的数。

实验中遇到的 问题及其解决方法 实验结果 建议 备注





见下页



源代码和截图见下页








程序一

程序代码:

SSEG SEGMENT PARA STACK 'stack'

ary dw 100h dup(0)



SSEG ENDS

DATA SEGMENT

sum dw 10

mark dw 76,69,84,90,73,88,99,63,100,80

S6 db 0 S7 db 0 S8 db 0 S9 db 0 S10 db 0

DATA ENDS

CODE SEGMENT






assume cs:CODE, ds:DATA, ss:SSEG



MAIN PROC FAR

call near ptr count

MAIN ENDP



mov ax, 4c00h int 21h mov ah,1

int 21h

mov ax, data mov ds, ax push ds sub ax,ax push ax






count proc near push ax push cx push bx push si lea si, mark

mov cx,sum

xor ax,ax

MOV BX,SI

COMPARE: MOV AX,[BX]

CMP AX,60

JL EXIT

CMP AX,70 JL SIX CMP AX,80 JL SEVEN CMP AX,90 JL EIGHT CMP AX,100 JNE NINE INC S10




JMP NEWDATA SIX: INC S6 JMP NEWDATA SEVEN: INC S7 JMP NEWDATA EIGHT: INC S8 JMP NEWDATA NINE: INC S9

NEWDATA: ADD BX,2 LOOP COMPARE PRINT:

MOV DL,AL



MOV AL,S6 ADD AL,30H

MOV AH,2 INT 21H MOV AL,S7 ADD AL,30H

MOV DL,AL

MOV AH,2






INT 21H MOV AL,S8 ADD AL,30H

MOV DL,AL

MOV AH,2 INT 21H MOV AL,S9 ADD AL,30H

MOV DL,AL

MOV AH,2 INT 21H MOV AL,S10 ADD AL,30H

MOV DL,AL

EXIT:mov ax, 4c00h

int 21h POP SI pop bx pop cx MOV AH,2 INT 21H






pop ax

count endp

CODE ENDS

END MAIN



截图:





程序二

程序代码:

SSEG SEGMENT PARA STACK 'stack'

DSEG SEGMENT

a dw ?

ary dw 100h dup(0) SSEG ENDS




DSEG ENDS

CSEG SEGMENT



assume cs:CSEG, ds:DSEG, ss:SSEG

MAIN PROC FAR

push ds push ax mov ax, dseg mov ds, ax

mov ax,1



x db 'asjfdddkahd' cnt equ $-x if cnt gt 5

rept 10

add ax,ax endm endif








mov ah,1 int 21h

mov ax, 4c00h int 21h

MAIN ENDP



CSEG ENDS

END MAIN



截图:















程序三

程序代码:

DATAS SEGMENT NUM Db 0 M Db 0

DATAS ENDS

STACKS SEGMENT stack db 100 dup(?)

STACKS ENDS








CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS

MOV DS,AX MOV AL,1CH

MOV AH,35 INT 21H

PUSH ES PUSH BX PUSH DS

MOV AX, SEG COUNT MOV DS, AX

MOV DX, OFFSET COUNT MOV AL, 1CH MOV AH,25 INT 21H

mov dl,M








POP DX POP DS

MOV AH,1CH MOV AH,25 INT 21H

MOV AX,4C00H INT 21H

COUNT PROC NEAR

PUSH CX push ds push ax mov ax,datas mov ds,ax INC NUM mov al,num mov M,al




POP CX pop ax

pop ds

IRET COUNT ENDP

CODES ENDS

END START

截图:












程序四

程序代码:



Code Segment

Assume CS:Code,DS:Code

Output MACRO Str_Addr lea dx,Str_Addr mov ah,9 int 21h EndM

Enter_CTLF proc Near push ax




push dx mov ah,02h mov dl,0dh int 21h mov dl,0ah int 21h pop dx pop ax ret

Enter_CTLF endp

Encode db '7591368024'

Prompt_Str1 db 'Please input the orical code: $' Prompt_Str2 db 'The encode: $'

Start: push cs pop ds push cs pop es

Output Prompt_Str1 cld




lea di,String mov cx,20

Read_Encode: mov ah,1 int 21h cmp al,13 jz Disp_Encode cmp al,'0' jb Read_Encode cmp al,'9' ja Read_Encode stosb

loop Read_Encode Disp_Encode: mov cx,di

sub cx,offset String lea si,String lea bx,Encode Encoding:




lodsb and al,0fh xlat

mov [si-1],al loop Encoding mov byte ptr [si],'$' call Enter_CTLF call Enter_CTLF Output Prompt_Str2 Output String Exit_Proc: mov ah,4ch int 21h String db ? Code ENDS END Start

截图:









本文来源:https://www.dywdw.cn/e16f15085a0102020740be1e650e52ea5518ce87.html

相关推荐
推荐阅读