• 领导讲话
  • 自我介绍
  • 党会党课
  • 文秘知识
  • 转正申请
  • 问题清单
  • 动员大会
  • 年终总结
  • 工作总结
  • 思想汇报
  • 实践报告
  • 工作汇报
  • 心得体会
  • 研讨交流
  • 述职报告
  • 工作方案
  • 政府报告
  • 调研报告
  • 自查报告
  • 实验报告
  • 计划规划
  • 申报材料
  • 当前位置: 勤学考试网 > 公文文档 > 工作方案 > 正文

    西安交通大学-汇编语言-实验报告(2015)最新x

    时间:2020-09-14 12:22:06 来源:勤学考试网 本文已影响 勤学考试网手机站

    汇编语言实验报告

    计算机xx班

    21x0505xxx xx

    2015年6月2日

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

    班级

    计算机xx

    实验时间

    2015

    姓名

    xx

    学号

    21x0505xxx

    实验内容概述

    实验一 熟悉汇编语言的实验环境

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

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

    实验四 子程序及 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 的中断向量指向中断处理程序COUNT,COUNT 统计1CH 中断次数并存入单元M 中。

    实验七 BIOS 和DOS 中断

    题9.2

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

    加密表为:

    输入数字: 0,1,2,3,4,5,6,7,8,9

    密码数字: 7,5,9,1,3,6,8,0,2,4

    实验步骤

    第一题

    1.熟悉汇编语言的实验环境,了解各项功能的调用。

    2.熟悉掌握masm,link,debug等工具,将一个asm文件通过汇编连接成一个可执行文件。

    第二题

    编写实验二并调试并调试

    查看数据段寄存器结果是否正确。

    第三题

    1.编写实验三并调试,初步了解中断的功能调用。

    2.从键盘输入若干1-5,看输出结果是否正确。

    第四题:

    在主程序中调用子函数count,完成将每个在数组mark里的成绩一一取出。

    分别判定其大小而放入统计60~69 分,70~79 分,80~89 分,90~99 分和100 分的人数的S6, S7, S8, S9 和S10 单元中,在数据段中查看出S6, S7, S8, S9 和S10中的数。

    第五题:

    1.使用条件汇编和重复汇编。

    2.判断当给定名为X 的字符串长度大于5 时,重复 ADD AX, AX 10 次。

    第六题:

    使类型1CH 的中断向量指向中断处理程序COUNT。

    COUNT中 1CH 中断每调用一次则给num加一,计算出num最后的值后存入单元M 中。

    第七题:

    1.接收从键盘输入的10 个十进制数字,输入回车符则停止输入。

    2.调用xlat使得(al)<—((al)+(bx))

    实验中遇到的问题及其解决方法

    1、关于没有定义堆栈段系统发出warning问题?

    Link的时候,如果程序没有定义堆栈,dos系统会发出警告,但不影响后续操作。

    问题是在实验2中遇到,解决的思路是暂且忽略这个警告,因为堆栈是用来保存便于返回的,当程序不是很复杂时,用堆栈显得不叫繁琐。

    2、关于汇编语言的输出问题?

    汇编语言输出时,预期为数字或者英文字母,但有时会出现乱码。

    经过仔细思考,发现汇编的输出同一为16进制,只要把所有的输出同一为16进制而不是10进制,输出就没有问题。

    3、关于数据加密问题?

    最后一题为数据加密后输出,题目给定一个密码表,要求将输入的数据加密后输出

    通过查找命令,发现xlat命令的作用是使得(al)<—((al)+(bx)),这样就很方便的将数据加密。

    实验结果

    第一题:

    第二题

    第三题

    第四题

    第五题

    年 月 日

    实验结果

    第六题:

    第七题:

    建议

    上机实验太少,可以考虑增加上机次数。

    两次上机时间相隔太久,最好可以将上机时间提前。

    可以增加一些选作的课程设计,满足不同需求的同学。

    下附各个题目代码;

    第二题:

    data segment

    m dw -1,0,0,1,-2,-3,-4,4

    max dw 0

    dizhi dw ?

    data ends

    code segment

    main proc far

    assume cs:code,ds:data

    mov ax,data

    start: push ds

    sub ax,ax

    push ax

    mov ax,data

    mov ds,ax

    lea bx,m

    mov cx,8

    t1: mov ax,[bx]

    test ax,8000h

    jz t2

    neg ax

    t2: cmp ax,max

    jb t3

    mov max,ax

    mov dizhi,bx

    t3: add bx,2

    loop t1

    mov ax,ax

    ret

    main endp

    code ends

    end start

    第三题:

    data segment

    count db 5 dup(0)

    data ends

    code segment

    main proc far

    assume cs:code,ds:data

    start: mov ax,data

    mov ds,ax

    s1: mov cx,10d

    call fenlei

    call disp

    mov ax,4c00h

    int 21h

    ret

    main endp

    fenlei proc near

    input: mov ah,1

    int 21h

    cmp al,0dh

    jz exit

    sub al,30h

    cmp al,01h

    jb input

    cmp al,05h

    ja input

    mov ah,0

    cbw

    mov bx,ax

    dec bx

    inc count[bx]

    loop input

    exit: ret

    fenlei endp

    disp proc near

    mov si,0

    mov bx,5

    s: mov dl,count[si]

    add dl,30h

    mov ah,2

    int 21h

    inc si

    dec bx

    cmp bx,0

    ja s

    ret

    disp endp

    code ends

    end start

    第四题:

    data segment

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

    S6 dw 0

    S7 dw 0

    S8 dw 0

    S9 dw 0

    S10 dw 0

    data ends

    code segment

    main proc far

    assume cs:code,ds:data

    start: push ds

    sub ax,ax

    push ax

    mov ax,data

    mov ds,ax

    s1: mov cx,10

    call fenlei

    mov ax,1

    ret

    main endp

    fenlei proc near

    mov si,0

    s2: mov ax,score[si]

    mov bx,10

    div bl

    mov bl,al

    sub bx,6

    sal bx,1

    inc S6[bx];S6为S6,S7,S8,S9,S10的首地址

    add si,2;根据((socre)/10-6)*2决定该成绩送给哪一个单元

    loop s2

    ret

    fenlei endp

    code ends

    end start

    第五题:

    data segment

    x db '123456'

    y db 0

    data ends

    code segment

    main proc far

    assume cs:code,ds:data

    start: push ds

    sub ax,ax

    push ax

    mov ax,data

    mov ds,ax

    mov ax,2

    IF (y-x) gt 5

    rept 10

    add ax,ax

    endm

    endif

    mov bx,1

    ret

    main endp

    code ends

    end start

    第六题:

    datarea segment

    M dw 0

    datarea ends

    ;------------------------------

    program segment

    main proc far

    assume cs:program,ds:datarea

    start:

    push ds

    sub ax,ax

    push ax

    mov ax,datarea

    mov ds,ax

    ;get interrupt vector

    mov al,1ch

    mov ah,35h

    int 21h

    push es

    push bx

    ;set interrupt vector

    push ds

    mov ax,seg count

    mov ds,ax

    mov dx,offset count

    mov al,1ch

    mov ah,25h

    int 21h

    pop ds

    ;--------------------------

    int 1ch

    int 1ch

    int 1ch

    int 1ch

    ;in al,21h

    ;and al

    ;out 21h,al

    ;sti

    ;------------------------

    ;mov di,1000

    ;delay:

    ;dec di

    ;jnz delay

    ;reset interrupt vector

    pop dx

    pop ds

    mov al,1ch

    mov ah,25h

    int 21h

    ret

    main endp

    count proc near

    sti

    inc M

    iret

    count endp

    program ends

    end start

    第七题:

    data segment

    score db 7,5,9,1,3,6,8,0,2,4

    buffer db 10 dup(1)

    data ends

    code segment

    main proc far

    assume cs:code,ds:data

    start: push ds

    sub ax,ax

    push ax

    mov ax,data

    mov ds,ax

    mov si,0

    mov cx,10

    lea bx,score

    input: mov ah,1

    int 21h

    cmp al,0dh

    jz exit

    sub al,30h

    jb input

    cmp al,09h

    ja input

    xlat;[(bx)+(al)]->al

    mov buffer[si],al

    inc si

    loop input

    exit: mov ax,ax

    ret

    main endp

    code ends

    end start

    • 考试时间
    • 范文大全
    • 作文大全
    • 课程
    • 试题
    • 招聘
    • 文档大全

    推荐访问