Win32彙編 MASM整數+-*/%
阿新 • • 發佈:2018-12-13
題目1:
鍵盤輸入整數x、y、z的值,求如下表達式的值: x*y+x/y-z 執行後若輸入:8 4 2 則結果輸出:8*4+8/4-2=32
;*【*/ .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 ;⑤資料段 x DWORD ? y DWORD ? z DWORD ? a DWORD ? b DWORD ? d DWORD ? fmt BYTE '%d %d %d',0 fmt2 BYTE '%d*%d+%d/%d-%d=%d',0 .CODE start: invoke scanf,ADDR fmt,ADDR x,ADDR y,ADDR z MOV EAX,x IMUL y MOV a,EAX CDQ MOV EAX,x IDIV y MOV b,EAX MOV EAX,a ADD EAX,b SUB EAX,z MOV d,EAX invoke printf,ADDR fmt2,x,y,x,y,z,d invoke ExitProcess,0 ;退出程序,返回值為0 end start ;*】*/
題目2:
鍵盤輸入整數x、y、z的值,求如下表達式的值: x*y+x%y-z 執行後若輸入:8 4 2 則結果輸出:8*4+8%4-2=30
;*【*/ .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 ;⑤資料段 x DWORD ? y DWORD ? z DWORD ? a DWORD ? b DWORD ? d DWORD ? fmt BYTE '%d %d %d',0 fmt2 BYTE '%d*%d+%d%%%d-%d=%d',0 .CODE start: invoke scanf,ADDR fmt,ADDR x,ADDR y,ADDR z MOV EAX,x IMUL y MOV a,EAX CDQ MOV EAX,x IDIV y MOV b,EDX MOV EAX,a ADD EAX,b SUB EAX,z MOV d,EAX invoke printf,ADDR fmt2,x,y,x,y,z,d invoke ExitProcess,0 ;退出程序,返回值為0 end start ;*】*/
題目3:
輸入兩個小寫字母,然後輸出其相應的大寫字母。 執行後輸入: a b 則結果輸出: A B
.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 ;⑤資料段 ;*【*/ x BYTE ? y BYTE ? fmt BYTE '%c %c',0 fmt2 BYTE '%c %c',0 .code start: invoke scanf,ADDR fmt,ADDR x,ADDR y MOV AL,x SUB AL,32 MOV x,AL MOV AL,y SUB AL,32 MOV y,AL invoke printf,ADDR fmt2,DWORD ptr x,DWORD ptr y ;*】*/ invoke ExitProcess,0 ;退出程序,返回值為0 end start