dec ch jnz again mov ah,4ch int 21h push ax push cx imul bx mov cx,dx mov bx,ax mov ax,x cwd add bx,ax adc cx,dx mov ax,y cwd sub bx,ax sbb cx,dx pop cx pop ax ret
P1 proc near
P1 endp Code ends
end start
四. 实验体会
在这一次的实验中的实验二的堆栈传递方式,让我很有体会,感觉和c语言中的函数相似度极高,通过自己的调试,进一步了解到了堆栈传递的细节,尤其是堆栈传递中的地址的变化,让自己体会深刻。
实验四 汇编语言高级编程专题
一. 实验目的
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:
down:
mov ah,2 int 21h dec ch jnz again
mov ah,4ch int 21h end start
code ends