汇编语言基础 基于x86处理器3.10编程练习答案

本文涵盖了从基本的整数表达式计算到符号常量、数据定义、文本常量和特定程序示例,深入浅出地介绍了计算机编程中的关键概念,包括算术运算、数据类型和变量管理。

1.整数表达式计算

.386 
.model	flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD
.code
main PROC
	MOV	EAX,4000h	;A+B
	MOV EBX,1000h
	MOV	ECX,2000h
	MOV	EDX,1500h

	ADD	EAX,EBX	;A+B
	SUB	ECX,EDX	;C-D
	SUB	EAX,ECX	;(A+B)-(C-D)


	INVOKE Exitprocess,0
main ENDP
END main

2.符号整数常量

.386 
.model	flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

Sunday	=0
Monday	=1
Tuesday	=2
Wednesday=3
Thursday=4
Friday=5
Saturday=6

.data
myDays BYTE Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday

.code
main PROC

	INVOKE Exitprocess,0
main ENDP
END main

3.数据定义

.386 
.model	flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

.data
var1 BYTE 10h
var2 SBYTE -14
var3 WORD 2000h
var4 SWORD +2345
var5 DWORD 12345678h
var6 SDWORD -2342423
var7 FWORD 0
var8 QWORD 1234567812345678h
var9 TBYTE 1000000000123456789Ah
var10 REAL4	-1.25
var11 REAL8 3.2E+100
var12 REAL10 -6.223424E-2343

.code
main PROC

	INVOKE Exitprocess,0
main ENDP
END main

4.符号文本常量

.386 
.model	flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD

one TEXTEQU <"I am">
two TEXTEQU <"litbaizhang">

.data
var1 BYTE one
var2 BYTE two

.code
main PROC

	INVOKE Exitprocess,0
main ENDP
END main

5.AddTwoSum

直接打开文件夹内的lst文件即可。

Microsoft (R) Macro Assembler Version 14.29.30133.0	    09/26/21 11:16:37
A.asm							     Page 1 - 1


				; AddTwoSum.asm - Chapter 3 example.

				.386
				.model flat,stdcall
				.stack 4096
				ExitProcess proto,dwExitCode:dword

 00000000			.data
 00000000 00000000		sum dword 0

 00000000			.code
 00000000			main proc
 00000000  B8 00000005			mov	eax,5				
 00000005  83 C0 06			add	eax,6				
 00000008  A3 00000000 R		mov sum,eax

					invoke ExitProcess,0
 0000000D  6A 00	   *	    push   +000000000h
 0000000F  E8 00000000 E   *	    call   ExitProcess
 00000014			main endp
				end main
Microsoft (R) Macro Assembler Version 14.29.30133.0	    09/26/21 11:16:37
A.asm							     Symbols 2 - 1




Segments and Groups:

                N a m e                 Size     Length   Align   Combine Class

FLAT . . . . . . . . . . . . . .	GROUP
STACK  . . . . . . . . . . . . .	32 Bit	 00001000 DWord	  Stack	  'STACK'	 
_DATA  . . . . . . . . . . . . .	32 Bit	 00000004 DWord	  Public  'DATA'	
_TEXT  . . . . . . . . . . . . .	32 Bit	 00000014 DWord	  Public  'CODE'	


Procedures, parameters, and locals:

                N a m e                 Type     Value    Attr

ExitProcess  . . . . . . . . . .	P Near	 00000000 FLAT	Length= 00000000 External STDCALL
main . . . . . . . . . . . . . .	P Near	 00000000 _TEXT	Length= 00000014 Public STDCALL


Symbols:

                N a m e                 Type     Value    Attr

@CodeSize  . . . . . . . . . . .	Number	 00000000h   
@DataSize  . . . . . . . . . . .	Number	 00000000h   
@Interface . . . . . . . . . . .	Number	 00000003h   
@Model . . . . . . . . . . . . .	Number	 00000007h   
@code  . . . . . . . . . . . . .	Text   	 _TEXT
@data  . . . . . . . . . . . . .	Text   	 FLAT
@fardata?  . . . . . . . . . . .	Text   	 FLAT
@fardata . . . . . . . . . . . .	Text   	 FLAT
@stack . . . . . . . . . . . . .	Text   	 FLAT
sum  . . . . . . . . . . . . . .	DWord	 00000000 _DATA	

	   0 Warnings
	   0 Errors

6.AddVriables程序

; AddVariables.asm - Chapter 3 example.

ExitProcess PROTO
.data
firstval  qword 20002000h
secondval qword 11111111h
thirdval  qword 22222222h
sum qword 0

.code
main proc
	mov	rax,firstval				
	add	rax,secondval		
	add rax,thirdval
	mov sum,rax

	mov ecx,0
	call ExitProcess
main endp
end 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值