1、1选择题1、80X86 通用寄存储器各有不同特殊功能,其中 CX 寄存器特定用法是-B-。A、 I/O 指令间接寻址中作地址寄存器 B、在循环指令作循环计数寄存器C、间接寻址中作变址寄存储器在D. 间接寻址中作基址寄存器2、80X86 通用寄存储器各有不同特殊功能,其中 DX 寄存器特定用法是-A-。A、I/O 指令间接寻址中作地址寄存器 B、在循环指令作循环计数寄存器C、间接寻址中作变址寄存储器在D. 间接寻址中作基址寄存器(AX,BX,CX,DX,SI,DI ,BP 等作用)3、指令 MOV BXDI,DX 中段内地址为-A-。A、BX 值加 DI 值 B、BX 值减 DI 值C、BX 值
2、左移 4 位加 DI 值 D、BX 值加 DI 值左移 4 位4、如下指令可将寄存器内容改变的是-C- 。A、XCHG AX , AX B、CMP AX , BX C、AND AX , BX D、TEST AX , BX 5、指令 MUL CX 是将-B-。A、 (AX:DX)(AX)*(CX ) B、 (DX:AX)(AX)*(CX)C、 (AX:BX)(AX) *(CX) D、 (AX:CX) (AX)*(CX)6、下列指令的表示中,不正确的是-B-。A、MOV AX,100 B、MOV DS,200 C、ADD AL , 200 D、MOV AX , DS 7、下列指令中不会改变指令指针
3、寄存器 IP 内容的是-A-。A、ADD B、JMP C、CALL D、RET 8、汇编程序中语句 DAT1 DB 08H 的含义是-D-。A、用 DAT1 表示 08H B、从标号 DAT1 对应的地址起 08H 个单元被分配C、定义 DAT1 为变量,其地址为 0008HD、定义 DAT1 为变量,其初值为 08H 9、指令 SHL AL,CL 是-B-。A、AL 内容左移到 CL 寄存器中,低位补 0 B、AL 内容左移 CL 指出的位数,低位补 0 C、AL 内容左移到 CL 寄存器中,低位补 AL 高位 D、AL 内容左移 CL 指出的位数,低位补 AL 高位 ( SAL 、SHR、
4、SAR、ROL、ROR、RCL、RCR 如何?)10、中断处理系统一般是由-D-组成。A、软件 B、硬件 C、固件 D、硬件与软件 11、在 8088/8086 系统中,中断向量是指 -B-.A.中断类型号 B.中断服务程序入口地址C.存放中断处理程序入口地址的存储单元的地址D.保护断点的栈区地址12、执行 IN AL , DX 指令后,进入寄存器的数据来自 D 。A、寄存器 、存储器 、立即数 、外设端口213、指令 JMP FAR PTR DONE 属于 C A段内转移直接寻址 B段内转移间接寻址C段间转移直接寻址 D段间转移间接寻址14、对于下列程序段:AGAIN:MOV AL,SIMO
5、V ES:DI,ALINC SIINC DILOOP AGAIN也可用 A 指令完成同样的功能。 AREP MOVSB BREP LODSBCREP STOSB DREPE SCASB15、 串指令中的目的操作数地址是由_ C _提供。 ASS:BP BDS:SICES:DI DCS:IP16、 在下列指令的表示中,不正确的是 C 。AMOV AL,BX+SI BJMP SHORT DONICDEC BX DMUL CL填空题1. 如果用 24 位存储一个无符号数,该数的范围是 ;如果存储的是一个补码1204表示的有符号数,该数的范围则是 。232. 指令 MOV AX, BXSI中源操作数的
6、寻址方式为_基址变址寻址_,目的操作数的寻址方式为_寄存器寻址_。3. 已知存储器中 2000:1000H 单元中的数据为 1234H,则此单元的物理地址为 21000,有效地址为 1000H。4.变量的类型有 db、dw、dd,标号的类型有 near、far。5. 设内存中某一单元的物理地址为 12345H,试完成下列不同的逻辑地址表示: (1) 1234H: 0005 H (2) 1200 H:0345H 6.已知两数 5678H 和 0DCBAH 相加,试写出下列各标志位的置位情况和相加结果。 OF: 0 SF: 0 AF: 1 CF: 1 结果: 3332H 7.已知两数 5678H
7、和 0DCBAH 相减,试写出下列各标志位的置位情况和相加结果。 OF: 0 SF: 0 AF: 1 CF: 1 结果: 79beH 8.写出下列存储器地址的段基址、偏移地址和物理地址。 4132H:5300H 段基址: 4132H 偏移地址: 5300H 物理地址: 46620H 9. 已知 DS=2000H, (BX)=0100H, (SI)=0002H, (20100H)=12H, (20101H)=34H,(20102H)=56H, (20103H)=78H, (21200H)=2AH, (21201H)=4CH, (21202H)=0B7H, (21203H)=65H,说明下列指令执
8、行后 AX 寄存器的结果。 (1)MOV AX,1200H 1200H (2)MOV AX,BX 0100H(3)MOV AX,1200H 4C2AH (4)MOV AX,BX 3412H(5)MOV AX,1100HBX 4C2AH (6)MOV AX,BXSI 7856H(7)MOV AX,1100HBXSI 65B7H310、设(SS)=2F00H, (SP)=0140H,若在堆栈中存入 5 个数据,则栈顶的物理地址为_2F136_H,若又从堆栈中取出 3 个数据,则栈顶的物理地址为_2F13C_H。11、令 MOV AX, 0F0F0H 和 ADD AX, 4652H 执行后,CF=_
9、1_, SF=_0_。12、汇编语言程序中语句格式由标识符、操作符、操作数、注释四部分组成。13、映像文件产生于_汇编_阶段,列表文件产生于_连接_阶段。14、808CPU 具有 20 根地址线,直接寻址能力可达 1M 。 15、8088CPU 中共有 14 个寄存器,这些寄存器可分为 2 大组。 16、8088CPU 从结构上可以分为执行单元 EU 和接口单元 BIU 。 17、AX、BX、CX、DX 均为 16 位寄存器,也可作为两个 8 位寄存器使用。 18、F 标志寄存器共有 9 个标志位,除 OF、SF、AF 和 CF 外,还有 PF、ZF、TF 、IF 、DF,其中用于记录是否产生
10、进位的标志位是 CF 。 19 操作数有三种类型,分别为 DB 操作数、 DW 操作数和 DD 操作数。 20、一个源程序中可以包含代码段、 数据 段及 堆栈 段。其中代码段是源程序中必不可少的,其它两个段可有可无。 21、SEGMENT/ENDS 称为 段定义 伪指令;ASSUME 称为 段寻址 伪指令;源程序结束伪指令为 END ;三种数据定义伪指令分别为 DB 、 DW 、 DD 。 22、常用的 DOS 功能调用中的 1 号功能调用完成 由键盘输入一个字符 操作,2 号功能调用完成 在屏幕上显示一个字符 。 9 号功能调用: 在屏幕上显示一个字符串 ; 0A 号功能调用 :由键盘读入一
11、个字符串。 23、一般称 SP 为 堆栈指针 寄存器,称 AX 为 累加寄存器 。 判断正误,并改正错误1.一个段允许的最大容量为 64KB,故无法使用超过 64KB 之外的存储器单元。F(允许段超越)2.指令 POP CS 可用于改变 CS 寄存器的值。F(pop cs 是非法指令,会导致代码段非正常改变)3.CS 段只能存放程序代码,DS 段只能存放数。F(数据可以放在 CS 段,也可以放在 DS段,程序代码亦然。但是 CPU 不会把放在 CS 段中的数据当作数据执行,也不去读 DS 段中的程序代码)4.若 AX=1234H,执行进栈指令后,SS:SP 单元的内容为 1234H。T5.汇编
12、语言程序中可以使用的语句有指令,伪指令和宏指令。T6.循环指令 LOOP 为短转移指令。T7.JNA 指令与 JB 指令是等价的指令。 F(JNA 为不高于则转移, JB 为低于则转移8指令 MOV SI,DI 是错误指令。T( 两个操作数不能同时为内存单元)9指令 ADD SI,5 是正确的指令。T10inc 和 loop 指令不影响 CF 标志位。 T简答题1、8086/8088CPU 从功能上分为几个独立的功能部件,分别是什么?答:分为两个独立的功能部件:(1)总线接口部件(BIU):功能, 负责 CPU 与存储器、 I/O 端口传送数据。即从内存4取指令,送指令队列缓冲器。(2)执行部
13、件(EU):功能,负责指令的译码、执行指令。2、简述微机中对存储器进行地址分段的原因。答:IBM PC 机的字长为 16 位,可以访问的最大存储空间为 =64KB;IBM PC 的最大162存储容量为 1M= ,要访问 1M 字节空间的存储空间需 20 位地址。采用存储器地址分20段的方法,实现在 16 位字长的机器里,提供 20 位地址。3、在 8086/8088CPU 中,物理地址和逻辑地址是指什么?已知逻辑地址为2E00:5A00H,计算出其对应的物理地址。答:Cpu 与存储器进行数据交换时在地址总线上提供的20位地址信息称为物理地址。逻辑地址是16位段地址和16位偏移地址组成的地址。3
14、3A00H4、试比较“ADD”和“+”的区别。答:“ADD”是加法指令,为指令的操作码部分,有对应的机器码;“+ ”是算术操作符,没有对应的机器码,在指令的操作数部分;汇编程序对包含“+”操作符的表达式进行计算后,得到一个数值。5、什么是寻址方式,有哪三种?答:指令通常由操作码和操作数两部分组成,寻址方式即指如何寻找操作码或操作数的方式,大多数情况是指寻找操作数的问题。可分为立即寻址、寄存器寻址和内存寻址三大种。解释下列名词: (1) 机器指令程序 (2) 汇编指令 (3) 汇编语言 (4) 汇编语言程序 (5) 汇编语言源程序 (6) 寻址方式 答:(1)机器指令程序:指 CPU 能直接识别
15、并执行的指令程序。(2) 汇编指令:指汇编语言中使用的一些操作符和助记符,还包括一些伪指令。(3)汇编语言:是面向机器的程序设计语言,由汇编指令、伪指令和其他符号组成。(4)汇编语言程序:也称为汇编语言源程序,是用汇编语言编写的一种计算机程序,属于计算机低级语言程序,是属性为 ASM 的源文件。(5)汇编语言源程序:同(4) 。(6)寻址方式:定位内存单元的方法。指出下列指令中源操作数和目的操作数分别采用的是哪种寻址方式。 (1) MOV DAT,64H ; 源:立即寻址; 目的:直接寻址(2) ADD AL,DATBXSI ; 源:相对基址变址寻址; 目的:寄存器寻址(3) MUL BX ;
16、 源:寄存器间接寻址; 目的:寄存器寻址(4) MOV BX,100H ; 源:立即寻址; 目的:寄存器寻址(5) MOVSW ; 源:寄存器间接寻址; 目的:寄存器间接寻址(6) ADD AX,BX ; 源:寄存器寻址; 目的:寄存器寻址(7) MOV BX,100 ; 源:直接寻址; 目的:寄存器寻址指出下列各指令分别属于哪一类指令 (1) ADC AX,BX ; 算术运算指令(ADC :带进位加法)(2) LEA BX,DAT ; 目的地址传送指令(LEA:装入有效地址)(3) RCL AX,CL ; 逻辑运算指令(RCL:通过进位的循环左移。CL 指定次数)(4) CLD ; 控制指令
17、(CLD:方向标志位置 0 指令)5(5) XOR AL,0FH ; 逻辑运算指令(XOR:异或运算) (6) LOOP NEXT ; 循环控制指令(7) HLT ; 控制指令(HLT:停机) (8) OUT DX,AL ; 输出传送指令指出下列指令的功能。 (1) MOV AX,DISPSI ;以偏移量 DISP 与 SI 中的内容的和为源单元地址,将该地址中的内容送入 AX 中。 (2) LEA DX,BUF ; 将 BUF 中的偏移地址装入 DX 中。(3) PUSH BX ; 将 BX 中的数据入栈,SP 指向 SP-2。(4) JNC NEXT ; 当 CF=0 时,则跳转到 NEX
18、T 标号处。指出下列指令的错误。 (1) MOV BX,DI ; 两个操作数不能同时在存储器中(2) MOV DS,100H ; 立即数不能直接传送给段寄存器(3) RLC AX,4 ; 没有此操作码(4) CMP BYTE PTRBX,AB ; 不能对两个存储器中的操作数进行比较(5) MOV AX,BXBP ; 同一个操作数中不能同时用两个基址寄存器(6) ADD 15H,BX ; 目的操作数不能为立即数(7) MOV CS,AX ; 不能用 MOV 指令修改 CS 的值(8) MOV AX,SIDI ; DI 中使用的括号不对根 据 以 下 要 求 , 写 出 对 应 的 汇 编 语 言
19、 指 令( 1) 用 偏 移 地 址 1020H 直 接 寻 址 , 把 存 储 单 元 一 个 字 内 容 与 立 即 数 3 相 加 , 结 果 存入 存 储 单 元 。ADD WORD PTR1020H,3( 2) 写 出 清 AL 寄 存 器 内 容 和 CF 的 指 令 。Sub al,al( 3) 写 出 AL 内 容 不 变 , 仅 清 CF 的 指 令 。Cmp al,al( 4) 写出执行以下计算的指令序列,其中各变量均为 16 位有符号数。Z W+(Z-X)MOV AX, W MOV BX, Z SUB BX, X ADD AX, BX MOV Z, AX Z(W*X)/(
20、Y+6)MOV AX,WIMUL XMOV BX,YADD BX,6IDIV BXMOV Z,AX6程 序 分 析 题 : 1、 设 、 、 、 均 为 位 带 符 号 数 , 分 别 装 在 、 、 、 存 储 单 元 中 , 阅读 如 下 程 序 段 , 得 出 它 的 运 算 公 式 , 并 说 明 运 算 结 果 存 于 何 处 。MOV AX ,X ;ax=XIMUL Y ;dx,ax=X*YMOV CX ,AX ;cx=X*Y的低16位MOV BX ,DX ;bx=X*Y的高16位MOV AX ,Z ;ax=ZCWD ;dx,ax=Z(双字)ADD CX ,AX ;cx=Z的低16
21、位+X*Y的低16位ADC BX ,DX ;bx=Z的高16位+X*Y的高16位+低位进位SUB CX ,540 ;cx=Z的低16位+X*Y的低16位-540SBB BX ,0 ;bx=Z的高16位+X*Y的高16位+低位进位-低位借位MOV AX ,V ;ax=VCWDSUB AX ,CX ;ax=V的低16位-(Z的低16位+X*Y的低16位-540)SBB DX ,BX ;dx=V的高16位-(Z的高16位+X*Y的高16位+低位进位-低位借位)-低位借位IDIV X ;/X运算公式:V-(X*Y+Z-540)/X,AX存商,DX存余数2、设有三个八位无符号数 x、y、z 分别存放在
22、DAT、DAT1、DAT2 单元中,请写出下列程序段的功能:MOV AX,0 ;ax=0MOV RES,AX ;res=ax=0LEA BX,DAT ;bx=offset xMOV AL,3 ;al=3CALL SUB1 ;push ip, jmp near ptr sub1MOV AL,5 ;al=5CALL SUB1 ;push ip, jmp near ptr sub1MOV AL,7 ;al=7CALL SUB1 ;push ip, jmp near ptr sub1HLT ;暂停SUB1: MUL BX ;ax=ADD RES,AX ;res=MOV AX,0 ;ax=0INC BX
23、 ;bx=bx+1RET ;pop ip答:计算 3x+5y+7z 的值,送入 res 及 res1 单元保存。3、 若 DATA1 与 DATA2 都是内存单元的地址,请指出下列程序段的功能: MOV AL,0 ;al=0LEA SI,DATA1 ;si=offset data17LEA BX,DATA2 ;bx=offset data2MOV CX,64H ;cx=64h,循环 100 次NEXT: MOV AL,SI ;al=data1 单元的数据MOV BX,AL ;data2 中的内容=data1 单元的数据INC SI INC BX LOOP NEXT HLT 答:将从 data1
24、 单元地址开始的 100 个字节类型的数传到以 data2 单元地址开始的存储区。4、阅读下面程序段,指出完成什么功能?BEGIN: MOV AL, ADR1 ;ADR1 是字节单元地址TEST AL, 1 ;测试 al=1,test 做“与”,仅改变 ZF 位JZ BRCH ;若 ZF=1,转到 brchMOV BL,80H ;若 al=0,则 bl=-1JMP STOP ;BRCH: MOV BL,0H ;若 al=1,则 bl=0STOP: MOV ADR2,BL ;ADR2 是字节地址HLT 答: if (adr1)=1Then (adr2)=0Else (adr2)=-15、假设 X
25、 和 X+2 单元的内容为双精度数 P,Y 和 Y+2 单元的内容为双精度数 Q,(X和 Y 为低位字),说明下列程序段的功能。SUB1:MOV DX, X+2 ;dx=x+2MOV AX, X ;ax=xADD AX, X ;ax=2xADC DX, X+2 ;dx=2(x+2)+cf,CMP DX, Y+2 ;(cmp 相当于做减法运算,但不保存结果。先判断p 的高位的 2 倍)JL L2 ;若 p 高位两倍小于 y+2,则跳至 L2 处JG L1 ;若 p 高位两倍大于 y+2,则跳至 L1 处CMP AX, Y ;P 的低位的两倍与 Q 的低位作比较JBE L2 ;若 P 的低位的两倍
26、低于等于 Q 的低位时,跳到 L2处L1: MOV AX, 1 ;若 2P 大于 Q,则 ax=1JMP SHORT EXIT ;L2: MOV AX,2 ;若 2P 小于等于 Q,则 ax=2EXIT: RET 答:判断 2P 是否大于 Q。如果大于,AX=1 , 否则 AX=2.程序的算法是先判断高字节,如果高字节相等再判断低字节。6、阅读下列程序,并将该程序执行后的结果填入空格DATA SEGMENT 8BLOCK DB 00H,12H,35H,64H,41H,7FHDB 80H,0ABH,0EFH,5FHVAL DB ?DATA ENDSCODE SEGMENTASSUME CS:CO
27、DE, DS:DATASTART:PUSH DSXOR AX,AX ;进行异或运算PUSH AXMOV AX,DATAMOV DS,AXMOV BX, OFFSET BLOCK ;ds:bx 指向数据段 0 位置处MOV AL,BX ;将 data 段数据送入 alINC BXMOV CX,09AGAIN: CMP AL,BXJG NEXT ;大于则转移MOV AL,BXNEXT: INC BX DEC CXJNZ AGAIN ;若 ZF=0,则跳到 againMOV VAL,ALMOV AX,4C00HINT 21H CODE ENDSEND MAIN结果:BX= 0aH VAL= 0EFH
28、 标志位 CF= 0 该程序的功能是: 将数据段的数据逐个比较,将较大的数送入 AL 中,再将最后的结果送入 VAL 中 。7、下面程序查找字符串 string 中是否有字母“” ,有则;否则,请将程序填写完整。MOV CX,20 ;假设字符串长度为20MOV SI , 0Mov al,65 NEXT : CMP AL , STRING SIJE YESAINC SI 9LOOP NEXTNOA : MOV AL , -1JMP SHORT DONE YESA : MOV AL,0DONE: HLT 8、补全编程,利用jcxz指令实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏
29、移地址存储在dx中 assume cs:codecode segmentstart :mov ax,2000hmov ds,axmov bx,0s: mov cl,bx Mov ch,0 Jcxz ok Inc bx jmp short s ok: mov dx,bxmov ax,4c00hint 21hcode endsend start9、补全编程,利用LOOP 指令实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中assume cs:codecode segmentstart: mov ax,2000H mov ds,axmov bx,0s: mov cl
30、,bx mov ch,0Inc cx inc bxloop sok:dec bxMov dx,bx mov ax,4c00hint 21hcode endsend start编写程序题:101、A、B、C 均为 8 位有符号数,求它们的和,送入 TOTAL。Assume cs:code,ds:dataData segmentTotal dw 0Data endsCode segmentStart: Mov ax,dataMov ds,axMov al,0Ah ;取 ACbw ;扩展为 16 位Mov dx,ax ;第一个数转存入 dxMov al,0Bh ;取 BCbw Add dx,axMo
31、v al,0ChcbwAdd dx,axMov total,dxMov ax,4c00hInt 21hCode endsEnd start二、无符号整数 A 和 B 分别存放在标号变量 ADR1 和 ADR2 的字节单元中,试设计一个程序,求两个数的和(C=A+B) ,并将其存放到标号变量 ADR3 的字节地址单元中(假定 C=255) 。Assume cs:codeData segmentADR1 db AADR2 db BADR3 db CData endsCode segmentStart:Mov ax,dataMov ds,axMov al,adr1Add al,adr2Mov adr
32、3,alMov ax,4c00hInt 21h11Code endsEnd start三、现有一个 48 位的二进制无符号整数存放在符号地址为 NUM1 开始的字节单元中(假设高位存放于高地址单元) ,试编程将此数除以 2,并将结果存放在 NUM2 开始的字节单元中,要求写出完整的程序结构。assume cs:code,ds:data data segment NUM1 DW 1234H,3456H,6789H NUM2 DW ?,?,? ;存储 48 位的二进制无符号商 REM DW ? ;存储余数 data ends code segment start: mov ax,data mov
33、ds,ax LEA SI,NUM1+4 LEA DI,NUM2+4 MOV BX,2 ; 除数为 2 MOV CX,3Mov dx,0 ENT1:MOV AX,SI DIV BX MOV DI,AX SUB SI,2 SUB DI,2 LOOP ENT1 MOV REM,DX ;余数存于 REM MOV AX,4C00H INT 21H code ends end start四、统计 data 段中数值正数、0 及负数的个数,分别保存在年 ADR1、ADR2 和ADR3 的地址中,要求写出完整的程序结构。(类似:数组 SCORE 中存有一个班级 30 名学生的汇编语言课程成绩,按照059,60
34、74,7584,85100 统计各分数段人数,存入 N0,N1,N2 ,N3 变量中。)答:Assume cs:code,ds:dataData segmentDw.Data ends12Code segmentStart:Mov ax,dataMov ds,axMov bx,0 ;ds:bx 指向第一个字节Mov al,0 ;初始化,al 存储负数个数Mov dx,0 ;初始化, dh 存储正数个数,dl 存储 0 的个数Mov cx,nS: cmp word ptr bx,0Jle con ;小于等于则跳到 con Inc dhJmp short next ;大于则跳到 nextCon:
35、jl next ;小于就跳到 nextInc dlNext: inc bx ;指向下一个数Loop sMov al,nSub al,dhSub al,dlMov adr1,dh ;正数的个数存于 adr1Mov adr2,dl ;0 的个数存于 adr2Mov adr3,al ;负数的个数存于 adr3Mov ax,4c00hInt 21h Code endsEnd start类似:存储成绩 scoreAssume cs:code,ds:dataData segmentScore dw 30 dup(?)N0 dw 0N1 dw 0N2 dw 0N3 dw 0Data endsCode seg
36、mentStart:Mov ax,dataMov ds,axLea si,score13Mov cx,30Again:Mov ax,siCmp ax,59 ;分段测试Ja L1L0: inc N0Jmp nextL1: cmp ax,74Ja L2Inc N1Jmp nextL2:cmp ax,84Ja L3Inc N2Jmp nextL3:cmp ax,100Ja nextInc N3Next:Add si,2Loop againExit:Mov ax,4c00hInt 21hCode endsEnd start5、试编写一个通用显示子程序(功能是:XXXXX) ,并调用此子程序实现YYYY
37、 功能。要求写出完整的程序结构。Assume cs:codeData segmentDb (显示的内容),0Data endsCode segmentStart:Mov ax,dataMov ds,axMov si,0Mov dh,m ;设置在屏幕的 m 行显示Mov dl,n ;设置在屏幕的 n 列显示Mov cl,x ;设置颜色Call show ;调用子程序Mov ax,4c00h14Int 21h;名称:show;功能:XXXXX;参数:ds:si 指向显示的内容的首地址;结果:没有返回值Show: ;相关寄存器入栈Push axPush bxPush cxPush dxPush es
38、Push diPush siMov ax,0b800h ;显示区Mov es,axMov di,0 ;0 行 0 列Mov al,160 ;一行占 160 个字节Mul dhAdd di,ax ;计算行的开始位置Mov al,2 ;一列占两个单元Mul dlAdd di,ax ;计算列的开始位置Mov al,cl ;保留颜色值S:Mov cl,si ;取得显示内容Mov ch,0Jcxz ok ;遇 0 结束Mov es:di,cl ;将取得的内容写入显存地址单元Mov es:di+1,alInc siAdd di,2Loop sOk: ;恢复相关寄存器原始信息Pop siPop diPop esPop dxPop cxPop bx15Pop axRet ;子程序返回Code endsEnd start