mov cl,al imul bl mov dx,ax mov al,cl cbw add dx,ax mov al,bl cbw sub dx,ax
3. 实践C?Asm的转换过程。 #include
return 0; }
}
_asm mov ax,0088h; _asm {
ret
mov ah,4ch
quit:
int 21h
code ends end start
四. 实验结果(包括必要的截图)
1、BL中的只有一位为1。编写程序测试,并输出提示信息“The X Bit is 1”,要求:地址表和转移表。
2. 编写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数内存数)。要求通过堆栈(寄存器、内存)传送所有参数。 使用堆栈: dx及0002中为f(3,-1)=1
二、使用寄存器传值 dx及0002中为f(3,-1)=1
3. 实践C?Asm的转换过程。
TITLE D:\\c++ documents\\huibian.cpp .386P
include listing.inc if @Version gt 510 .model FLAT else
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' _TEXT ENDS
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' _DATA ENDS
CONST SEGMENT DWORD USE32 PUBLIC 'CONST' CONST ENDS
_BSS SEGMENT DWORD USE32 PUBLIC 'BSS' _BSS ENDS
$$SYMBOLS $$SYMBOLS
SEGMENT BYTE USE32 'DEBSYM' ENDS
$$TYPES SEGMENT BYTE USE32 'DEBTYP' $$TYPES ENDS
_TLS SEGMENT DWORD USE32 PUBLIC 'TLS' _TLS ENDS ;
COMDAT _main
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' _TEXT ENDS
FLAT GROUP _DATA, CONST, _BSS
ASSUME CS: FLAT, DS: FLAT, SS: FLAT
endif PUBLIC
_main
EXTRN __chkesp:NEAR ;
COMDAT _main
_TEXT SEGMENT _main PROC NEAR
; 3 : {
push mov
ebp ebp, esp
; 00000040H
; COMDAT
sub esp, 64 push push push
ebx esi edi
lea edi, DWORD PTR [ebp-64] mov mov
ecx, 16
; 00000010H
; ccccccccH
eax, -858993460
rep stosd