.386
.model flat, stdcall
.stack 4096
ExitProcess PROTO, dwExitCode:DWORD
Include Irvine32.inc;
.data
CUONT = 4
BlueTextOnGray = blue + (lightGray * 16) ;//预定义颜色常数。blue = 1;lightGray = 7;
DefaultColor = lightGray + (black * 16) ;//black = 0
arrayD SDWORD 12345678h, 1A4B2000h, 3434H, 7AB9H
prompt BYTE "eNTER A 32-Bit signed integer: ", 0
.code
main PROC
;//选择浅灰背景蓝色文本
mov eax,BlueTextOnGray ;//设置背景色
call SetTextColor ;//设置输出文本的前景色和背景色,调用SetTextColor时,给EAX分配一个颜色属性
call Clrscr ;//Clrscr过程清楚控制台窗口。该过程通常在程序开始和结束时被调用,如果在其他时间调用这个过程,就需要先调用WaitMsg来暂停程序,
;//这样就可以让用户在屏幕清楚前,阅读屏幕信息
;//用DumpMem显示数组
mov esi,OFFSET arrayD ;//开始位置的OFFSET
mov ebx,TYPE arrayD ;//双字 = 4 字节
mov ecx,LENGTHOF arrayD ;//arrayD中的单元数
call DumpMem ;//DumpMem过程在控制台窗口中用十六进制的形式显示一段内存区域,ESI中存放的时单元个数;EBX中存放的时单元大小(1 = 字节,2 = 字,4 = 双字)
;//请求用户输入一组有符号整数
call Crlf ;//Crlf过程将光标定位在控制台窗口下一行的开始位置
mov ecx,CUONT
L1:
mov edx,OFFSET prompt
call WriteString ;//WriteString过程向操作台窗口输出一个空字节结束的字符串。过程用EDX传递字符串的偏移量
call ReadInt ;//ReadInt过程从键盘读取一个32位有符号整数,并用EAX返回该值。用户可以键入前置加号或减号,而其后跟的只能时数字。ReadInt设置溢出标志位,如果
;//输入数值无法标志为32位有符号数,则显示一个错误信息。返回值包括所有的有效数字,直到遇见第一个非数字字符
call Crlf ;//Crlf过程将光标定位在控制台窗口下一行的开始位置
;//用十六进制,十六进制和二进制显示整数
call WriteInt ;//ReadInt过程从键盘读取一个32位有符号整数,并用EAX返回该值。用户可以键入前置加号或减号,而其后跟的只能时数字。ReadInt设置溢出标志位,如果
;//输入数值无法标志为32位有符号数,则显示一个错误信息。返回值包括所有的有效数字,直到遇见第一个非数字字符
call Crlf ;//Crlf过程将光标定位在控制台窗口下一行的开始位置
call WriteHex ;//过程以8位十六进制格式向控制台窗口输处一个32位无符号整数,如果需要,应插入前置0,过程用EAX传递整数
call Crlf
call WriteBin ;//WriteBin过程以ASCII二进制格式向控制台窗口输出一个整数。过程用EAX传递该整数,为了便于阅读,二进制位以四位一组的形式显示。
call Crlf
call Crlf
loop L1
;//返回控制台窗口的默认颜色
call WaitMsg ;//WaitMsg过程显示"Press any key to conitinue..."消息,并等待用户按键当用户想在数据滚动和消失之前暂停屏幕显示时,这个过程就很有用,过程没有输入参数
mov eax,DefaultColor
call SetTextColor
call Clrscr
exit
invoke ExitProcess,0
main ENDP
END main
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交