lab2: MOV DL,IS耵 CMP DL.BL labl 等于第2次输入的符号则转 MOV AH.2 NT 21H NC SI LOOP lab2 labl: MOV AH, 4CH it 21H cseg eNds END main 2021/2/19 80x86汇编语言程序设计
2021/2/19 80x86汇编语言程序设计 lab2: MOV DL,[SI] CMP DL,BL JZ lab1 ;等于第2次输入的符号则转 MOV AH,2 INT 21H INC SI LOOP lab2 lab1:MOV AH,4CH INT 21H cseg ENDS END main
【例62】编写一个子程序,对一个无符号的字型数组的各元素求和。在调 用子程序之前,已把数组的段地址放在DS中,起始偏移地址放在寄存器SI 中,数组元素个数(>0放在CX中。要求子程序把计算结果以双字的形式存 放,高位放在DX中,低位放在AX中 sum PROC NEAR PUSH BX 保护用到的寄存器BX XOR AXAX MOV DX,AX;求和前先把存放结果的DX,AX清0 MOV BX.AX 2021/2/19 80x86汇编语言程序设计
2021/2/19 80x86汇编语言程序设计 【例6.2】编写一个子程序,对一个无符号的字型数组的各元素求和。在调 用子程序之前,已把数组的段地址放在DS中,起始偏移地址放在寄存器SI 中,数组元素个数(>0)放在CX中。要求子程序把计算结果以双字的形式存 放,高位放在DX中,低位放在AX中。 sum PROC NEAR PUSH BX ;保护用到的寄存器BX XOR AX,AX MOV DX,AX ;求和前先把存放结果的DX,AX清0 MOV BX,AX
s1: ADD AX,IBX+S;把一个元素加到AX中 ADC DX. 若有进位,DX加1 NC BX NC BX BX加2,指向数组的下一元素 LOOP SI POP BX ;恢复寄存器BX的值 RET sum ENDP 2021/2/19 80x86汇编语言程序设计
2021/2/19 80x86汇编语言程序设计 s1: ADD AX,[BX+SI] ;把一个元素加到AX中 ADC DX,0 ;若有进位,DX加1 INC BX INC BX ;BX加2,指向数组的下一元素 LOOP s1 POP BX ;恢复寄存器BX的值 RET sum ENDP
6.2过程的参数传递 参数的分类: 入口参数:由调用者向过程传递的数据,作为过程的输入参数。 出口参数:由过程向调用者返回的数据,作为过程的输出参数。 根据问题的需要,过程可以只有入口参数或只有出口参数,也可以 二者兼有。 对于过程与调用者之间的参数传递,可根据传递的数据量,选择采 用寄存器、变量或堆栈等方式。由于过程是相对独立的功能块,因此, 在定义过程时,通常要加上适当的注释,主要包括功能、入口参数与出 口参数等。 2021/2/19 80x86汇编语言程序设计
2021/2/19 80x86汇编语言程序设计 6.2 过程的参数传递 参数的分类: ▪ 入口参数:由调用者向过程传递的数据,作为过程的输入参数。 ▪ 出口参数:由过程向调用者返回的数据,作为过程的输出参数。 根据问题的需要,过程可以只有入口参数或只有出口参数,也可以 二者兼有。 对于过程与调用者之间的参数传递,可根据传递的数据量,选择采 用寄存器、变量或堆栈等方式。由于过程是相对独立的功能块,因此, 在定义过程时,通常要加上适当的注释,主要包括功能、入口参数与出 口参数等