汇编语言基于X86处理器-第五章

.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值