实验二 汇编语言程序设计(顺序、多分支、循环)

本次实验旨在掌握8086汇编语言的顺序、多分支和循环结构,包括计算带符号数表达式、地址表操作、成绩统计及字符串处理等任务。实验过程中遇到挑战,但通过查阅资料得以解决,认识到汇编语言的实践难度与理论学习间的差距。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

               

目录

                 实验二  汇编语言程序设计(顺序、多分支、循环)

一. 实验目的

二. 实验内容

三. 实验过程和程序

四. 实验结果(包括必要的截图)

五.实验体会

注:模仿是最深的爱慕


 实验二  汇编语言程序设计(顺序、多分支、循环)

 

一. 实验目的

  1、掌握顺序和循环程序结构和设计方法;

  2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。

二. 实验内容

  1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:

  ①计算表达式值(V–(X*Y+Z-720))/X;

  ②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。

  2、使用地址表实现如下功能:根据输入的数字1-7,分别显示相应的英文星期名,如果输入其他字符,则重新输入。

  3、求一个班50名学生成绩的平均值、最大值和最小值,并将结果显示出来。

  4、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串;查找中间是否有‘masm’子串。如果有,输出‘Yes’;否则,输出‘No’)。 

三. 实验过程和程序

;the source code of the Exp 2.1
stack   segment stack
        db 512 dup(?)
stack   ends

data    segment
        inputX db "input x:",0ah,0dh,'$'
        inputY db "input y:",0ah,0dh,'$'
        inputZ db "input z:",0ah,0dh,'$'
        inputV db "input v:",0ah,0dh,'$'
    
        x dw 0
        y dw 0
        z dw 0
        v dw 0
        sum1 dw 0
        sum2 dw 0
    
        input db 8
        db 1 dup(?)
        db 8 dup(?)
        sign db 0
        outputSum1 db "sum1:",0ah,0dh,'$'
        outputSum2 db "sum2:",0ah,0dh,'$'
data    ends

code    segment 'code'
        assume cs: code, ds: data, ss: stack
start:
        mov ax, data
        mov ds, ax
        mov ax, stack
        mov ss, ax
	
        mov ah, 09h
        lea dx, inputX
        int 21h
        call readInt
        mov word ptr [x], ax
	
        mov ah, 09h
        lea dx, inputY
        int 21h
        call readInt
        mov word ptr [y], ax
	
        mov ah, 09h
        lea dx, inputZ
        int 21h
        call readInt
        mov word ptr [z], ax
	
        mov ah, 09h
        lea dx, inputV
        int 21h
        call readInt
        mov word ptr [v], ax
	
        mov ax, [x]
        mov bx, [y]
        imul bx         ; x*y
        add ax, [z]     ; x*y+z
        sub ax, 720     ; x*y+z-720
        mov bx, [v]
        sub bx, ax      ; v-(x*y+z-720)
        mov ax, bx      
        cwd
        mov bx, [x]     
        idiv bx          ; (v-(x*y+z-720))/x
        mov [sum1], ax
        mov [sum2], dx
	
        lea dx, outputSum1
        mov ah, 09h
        int 21h
	
        mov ax, [sum1]
        call prinIint
	
        mov dl, 0ah
        mov ah, 02h
        int 21h
	
        mov dl, 0dh
        mov ah, 02h
        int 21h
	
        lea dx, outputSum2
        mov ah, 09h
        int 21h
	
        mov ax, [sum2]
        call prinIint
	
        mov ah, 4ch
        int 21h
readInt:
        pushf
        pus
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值