合肥工业大学汇编语言实验报告 联系客服

发布时间 : 星期一 文章合肥工业大学汇编语言实验报告更新完毕开始阅读9c79a5c303d8ce2f016623b4

第2题堆栈截图

第2题寄存器截图

五. 实验体会

在这一次的实验当中,我学到了地址表以及转移表的应用,同时也学到了子程序的使用。

实验四 汇编语言高级编程专题

一. 实验目的

1、汇编语言宏程序设计;

2、 掌握中断服务子程序的编写。 3、 汇编语言与高级语言的混编。

二. 实验内容

1、编写一个宏,求三个数的最小数,原型为:MIN3 x,y,z,min 2、挂接1CH中断,正计时60秒后退出。要求屏幕显示0-59的秒数。 3、VC++中编写内联汇编,将字节数组的每个元素高低四位互换。 char dbyte[] = {0x34,0x45,0x56,0x67,0xaf};

三. 实验过程和程序 1.

MIN3 macro x,y,z,min

code segment

assume cs:code,ds:data

start: mov ax,data

mov ax,x cmp ax,y jl next0 mov ax,y jl down0 mov ax,z

mov min,ax endm x dw 13 y dw 15 z dw 16 min dw ?

next0: cmp ax,z

down0:

data segment

data ends

mov ds,ax

MIN3 x,y,z,min

mov bx,min mov ch,4 mov cl,4

rol bx,cl mov al,bl and al,0fh cmp al,0ah jl next

add al,37h ;\jmp down

add al,30h ;\mov dl,al

again:

next: 2.

down:

mov ah,2 int 21h dec ch jnz again

mov ah,4ch int 21h end start

code ends

;汇编 挂接1CH中断,正计时60秒后退出 DATA SEGMENT

OLDISR DW ?,? TIMER DB 100 COUNTER DW 0 ISDONE DB 0

DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA MOV DS,AX MOV AX,0 MOV ES,AX CLI

START: MOV AX,DATA

MOV AX,ES:[1CH*4] ;保存原中断向量 MOV OLDISR[0],AX MOV AX,ES:[1CH*4+2] MOV OLDISR[2],AX

MOV WORD PTR ES:[1CH*4],OFFSET ISR MOV WORD PTR ES:[1CH*4+2],SEG ISR STI

DELAY:CMP ISDONE,1 JNZ DELAY CLI

MOV AX,OLDISR[0] ; 恢复原中断向量 MOV ES:[1CH*4],AX MOV AX,OLDISR[2] MOV ES:[1CH*4+2],AX STI

MOV AH,4CH INT 21H

ISR PROC FAR

PUSH DX PUSH AX MOV AX,DATA MOV DS,AX STI

INC TIMER ; 执行新中断处理 CMP TIMER,1000/55 JB DONE MOV TIMER,0 MOV AH,2

MOV DL,0DH

;设置新中断向量