汇编语言上机实验三:中断和子程序设计

本次实验旨在掌握8086汇编中的子程序、宏和中断程序设计,包括计算x/y+x-y的子程序、求三个数最大值的宏以及挂接1CH中断实现90秒计时。实验过程中涉及汇编语言程序的建立、调试和运行,通过堆栈传递参数并利用AX寄存器输出结果。实际操作中,部分代码理解有一定难度。

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

                       

                               

目录

                       

                                实验三 中断和子程序设计

 

  1. 实验目的

  2. 实验内容

  3. 实验过程和程序

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

       5. 实验体会


实验三 中断和子程序设计

 

  1. 实验目的

  (1)掌握子程序、宏和中断程序的设计方法;

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

  2. 实验内容

  (1)编写一个子程序计算z=f(x,y)=x/y+x-y(x,y,z有符号数内存字数)。要求通过堆栈传送输入参数,输出参数通过AX传递。(要求输入输出实现,且有提示)。

  (2) 编写一个宏,求三个数的最大数,原型为:MAX3 x,y,z,min,最大值要求输出。

  (3) 挂接1CH中断,正计时90秒后退出。要求屏幕显示0-89的秒数。

  3. 实验过程和程序

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

data segment
        input1 db "input x:",0ah,0dh,'$'
        input2 db "input y:",0ah,0dh,'$'
        input db 8
        db 1 dup(?)
        db 8 dup(?)
        sign db 0
        x dw 0
        y dw 0
        z dw 0
        data ends
	
code segment
        assume ds: data, cs: code
start:
        mov ax, data
        mov ds, ax
        mov ax, stack
        mov ss, ax
	
        lea dx, input1
        mov ah, 09h
        int 21h
	
        lea dx, input
        mov ah, 0ah
        int 21h
	
        mov dl, 0ah
        mov ah, 02h
        int 21h
	
        mov dl, 0dh
        mov ah, 02h
        int 21h
	
        mov ax, 0
        xor cx, cx
        mov cl, [input+1]
        lea si, [input+2]
        mov byte ptr [sign], 0
        cmp byte ptr[si], '-'
        jnz next1
        inc si
        dec cx
        mov byte ptr [sign], 1
next1:
	mov ax, 0
loop1:
        mov bx, 10
        mul bx
        xor bx, bx
        mov bl, [si]
        sub bl, '0'
        add ax, bx
        inc si
        loop loop1
	
        cmp byte ptr [sign], 1
        jnz next2
        xor bx, bx
        sub bx, ax
        mov ax, bx
	
next2:
        mov [x], ax
	
        lea dx, input2
        mov ah, 09h
        int 21h
	
        mov byte ptr [input], 8
        lea dx, input
        mov ah, 0ah
        int 21h
	
        mov dl, 0ah
        mov ah, 02h
        int 21h
	
        mov dl, 0dh
        mov ah, 02h
        int 21h
	
	
	
        mov ax, 0
        xor cx, cx
        mov cl, [input+1]
        lea si, [input+2]
        mov byte ptr [sign], 0
        cmp byte ptr [si], '-'
        jnz next5
        inc si
        dec cx
        mov byte ptr [sign], 1
next5:
        mov ax, 0
loop2:
        mov bx, 10
        mul bx
        xor bx, bx
      
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值