1. 程式人生 > >Win32彙編 資料型別

Win32彙編 資料型別

題目1:

定義結構體商品,含編號、品名、單價、數量,輸入一個商品資訊求其金額並輸出(按“%g”格式輸出)。
若執行後輸入:S001 小刀 4.5 2
則執行結果輸出:編號:S001,品名:小刀,單價:4.5,數量:2,金額:9

.386
.model flat, stdcall
option casemap :none
include kernel32.inc
includelib kernel32.lib
includelib	msvcrt.lib		;引用C庫檔案
printf PROTO C:ptr sbyte,:vararg	;C語言printf函式原型宣告
scanf PROTO C:ptr sbyte,:vararg	;C語言scanf函式原型宣告
 ;*【*/
.data
Infmt BYTE '%s %s %lf %d',0
Outfmt BYTE '編號:%s,品名:%s,單價:%g,數量:%d,金額:%g',13,10,0
d QWORD 4.0
Book struct
sh BYTE 14 DUP(?)
sm BYTE 20 DUP(?)
dj QWORD 4.0
ces DWORD 4
Book ends
s Book <>
.code
start:
invoke scanf,ADDR Infmt,ADDR s.sh,ADDR s.sm,ADDR s.dj,ADDR s.ces
FLD s.dj
FiMUL s.ces
FSTP d
invoke printf,ADDR Outfmt,ADDR s.sh,ADDR s.sm,s.dj,s.ces,d
invoke ExitProcess,0
end start

 ;*】*/

題目2:

鍵盤輸入2個實數,然後按相反順序輸出這2個實數。
執行後若輸入:3.3 4.45
則結果輸出:4.45 3.3
執行後若輸入:1.35 2.4
則結果輸出:2.4 1.35

.386				;選擇的處理器
.model flat, stdcall	
option casemap:none		;指明識別符號大小寫敏感
include	kernel32.inc	;要引用的標頭檔案
includelib	kernel32.lib	;要引用的庫檔案
includelib	msvcrt.lib	;引用C庫檔案
scanf PROTO C:DWORD,:vararg	;C語言scanf函式原型宣告
printf PROTO C:DWORD,:vararg;C語言printf函式原型宣告
.data				;⑤資料段
 ;*【*/
a QWORD ?
b QWORD ?
fmt BYTE '%lf %lf',0
fmt2 BYTE '%g %g',0
.CODE
start:
invoke scanf,ADDR fmt,ADDR a,ADDR b
invoke printf,ADDR fmt2,b,a
 

 ;*】*/
invoke	ExitProcess,0		;退出程序,返回值為0
end start

題目3:

鍵盤輸入2個整數,然後按相反順序輸出這2個整數。
執行後若輸入:3 4
則結果輸出:4 3
執行後若輸入:1 2
則結果輸出:2 1

.386				;選擇的處理器
.model flat, stdcall	
option casemap:none		;指明識別符號大小寫敏感
include	kernel32.inc	;要引用的標頭檔案
includelib	kernel32.lib	;要引用的庫檔案
includelib	msvcrt.lib	;引用C庫檔案
scanf PROTO C:DWORD,:vararg	;C語言scanf函式原型宣告
printf PROTO C:DWORD,:vararg;C語言printf函式原型宣告
.data				;⑤資料段
 ;*【*/
a DWORD ?
b DWORD ?
fmt BYTE '%d %d',0
fmt2 BYTE '%d %d',0
.CODE
start:
invoke scanf,ADDR fmt,ADDR a,ADDR b
invoke printf,ADDR fmt2,b,a

 ;*】*/
invoke	ExitProcess,0		;退出程序,返回值為0
end start

題目4:

鍵盤輸入一個字母,然後輸出該字母。
執行後若輸入:A
則結果輸出:A
執行後若輸入:a
則結果輸出:a

.386				;選擇的處理器
.model flat, stdcall	
option casemap:none		;指明識別符號大小寫敏感
include	kernel32.inc	;要引用的標頭檔案
includelib	kernel32.lib	;要引用的庫檔案
includelib	msvcrt.lib	;引用C庫檔案
scanf PROTO C:DWORD,:vararg	;C語言scanf函式原型宣告
printf PROTO C:DWORD,:vararg;C語言printf函式原型宣告
.data				;⑤資料段
 ;*【*/
a BYTE ?
fmt byte '%c',0
fmt2 byte '%c',0.
.CODE
start:
invoke scanf,ADDR fmt,ADDR a
invoke printf,ADDR fmt2,DWORD PTR a
 ;*】*/
invoke	ExitProcess,0		;退出程序,返回值為0
end start