Code Segment
Assume CS:Code,DS:Code
---------------------------------------
功能:显示指定地址(Str_Addr)的字符串
入口:
Str_Addr=字符串地址(要求在数据段)
用法: Output Str_Addr
用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
---------------------------------------
功能:输出回车换行
Output_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Output_CTLF endp
---------------------------------------
Clear_Screen proc Near 清屏
push es
mov ax,0b800h
mov es,ax
xor di,di
mov al,20h
mov ah,es:[di][1] 取字符显示属性
mov cx,2000
cld
rep stosw 清屏
pop es
xor dx,dx
xor bh,bh
mov ah,2
int 10h
ret
Clear_Screen endp
---------------------------------------
Addition Proc Near 加法运算
lea ax,Addition
push ax
mov cl,'+'
mov ch,'1'
call Input_Digit
add al,ah 加法
aaa ASCII码加调整
@@Disp_Resault:mov ah,2
push ax
jnc $+6
mov dl,ch
int 21h
pop ax
or al,30h
mov dl,al
int 21h
call Continue_Back
ret
Addition EndP
---------------------------------------
Subtration Proc Near 减法运算
lea ax,Subtration
push ax
mov cl,'-'
mov ch,'-'
call Input_Digit
sub al,ah 减法
jnc $+6
neg al
jmp @@Disp_Resault
aas ASCII码减调整
jmp @@Disp_Resault
Subtration EndP
---------------------------------------
输入两个十进制数
Input_Digit Proc Near
Output prompt_1 提示输入第一个数
call @@Input
mov bl,al
Output prompt_2 提示输入第二个数
call @@Input
mov bh,al
mov dx,bx
call Output_CTLF
mov ah,2
mov dl,bl
int 21h
mov dl,cl
int 21h
mov dl,bh
int 21h
mov dl,'='
int 21h
mov ax,bx
ret
prompt_1 db 13,10,'Please input the first digit:$'
prompt_2 db 13,10,'Please input the second digit:$'
@@Input: mov ah,1
int 21h
cmp al,'0'
jb @@Input
cmp al,'9'
ja @@Input
ret
prompt_3 db 13,10,'Continue/Back(C/B)?$'
Continue_Back: pop ax
Output prompt_3
@@Press_0: mov ah,1
int 21h
or al,20h 转换成小写
cmp al,'c'
jnz $+3
ret
cmp al,'b'
jnz @@Press_0
pop ax
ret
Input_Digit EndP
---------------------------------------
Main_Menu db 'add',13,10,'subtract',13,10,'quit',13,10,'$'
Press_Key db 7,13,10,13,10,'The complated. Press any key to exit...$'
Start:push cs
pop ds
push cs
pop es 使数据段、附加段与代码段同段
@@Menu: call Clear_Screen 清屏
Output Main_Menu 显示菜单
@@Press_1: mov ah,1
int 21h
or al,20h 转换成小写
cmp al,'q'
jz Exit_Proc 结束程序
cmp al,'a'
jnz $+10
call Clear_Screen
call Addition 加法
jmp @@Menu
cmp al,'s'
jnz @@Press_1
call Clear_Screen
call Subtration 减法
jmp @@Menu
-----------------------------------
Exit_Proc: Output Press_Key 提示 *** 作完成,按任意键结束程序
mov ah,1
int 21h
mov ah,4ch 结束程序
int 21h
Buffer dw ?,? 数据缓冲区
Code ENDS
END Start 编译到此结束
Masm for Windows 集成实验环境软件介绍Masm for Windows 集成实验环境是针对汇编语言初学者的特点开发的一个简单易用的汇编语言学习与实验软件,支持32位与64位的WINDOWS 7,支持DOS的16/32位汇编程序和Windows下的32汇编程序(并提供调试通过的35个WINDOWS汇编程序实例源代码),它具有错误信息自动定位、关键字实时帮助并且在帮助中动画演示汇编指令的执行过程、语法着色、无限次撤消与恢复、WORD式的查找、替换、定位、支持中文、长文件名等功能。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)