汇编学习---分支结构程序设计
2012-01-05 16:13
302 查看
题目要求:
编写汇编程序实现从键盘输入一个数字,然后判断其奇偶性;如果为奇数,则在屏幕输出1,否则输出0.
题目分析:
此题为典型的分支结构程序,主要要解决以下几个难点:
接受用户的输入 (调用DOS中断的01H号功能实现)
奇偶数的判断 (利用RCR循环右移一位得到输入数值的最低位,判断是0还是1)
根据奇偶数条件的跳转
条件输出 (调用DOS中断的02H号功能实现)
代码实现:
代码不足:
字符输入输出显示格式比较丑陋,且不友好,可以考虑添加回车加换行等。
————————————————————————————————
题目要求:
利用汇编代码实现一个dos功能菜单
题目分析:
主要难点在于字符串输出,字符的输入;解决办法,可以调用dos中断的09H功能输出字符串,01H号功能输入字符。
代码实现:
data segment
MENU db 'Action: ',0dh,0ah;提示信息准备
db 'This is a washing machine!',0dh,0ah
db 'You can use the MENU to choose function!',0dh,0ah
db '----------------------------------------',0dh,0ah
db '1.open the cap of washing machine ! ',0dh,0ah
db '2.close the cap !',0dh,0ah
db '3.set washing time !' ,0dh,0ah
db '4.start the washing machine !',0dh,0ah
db '5.stop the washing machine !',0dh,0ah
db '6.quit !',0dh,0ah
db '----------------------------------------',0dh,0ah,'$'
INPUT db 'input your choose: $'
F1 db 0dh,0ah,'cap opened, clothes puted in !',0dh,0ah,'$'
F2 db 0dh,0ah,'cap closed !',0dh,0ah,'$'
F3 db 0dh,0ah,'set washing time to 5 min!',0dh,0ah,'$'
F4 db 0dh,0ah,'washing machine has started',0dh,0ah,'$'
F5 db 0dh,0ah,'succeed in washing the clothes !',0dh,0ah,'$'
F6 db 0dh,0ah,'quitd! thanks to using this washing machine !',0dh,0ah,'$'
F7 db 0dh,0ah,'no this choose ,please reinput your choose !',0dh,0ah,'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ah,09h;调用09H号功能输出MENU信息。
mov dx,offset MENU
int 21h
INP:
mov dx,offset INPUT ;调用09H号功能输出提示信息INPUT
int 21h
mov ah,01h;调用01H号功能输入用户的选择
int 21h
cmp al,'1';根据用户的输入,实现对应的输出
jz W1
cmp al,'2'
jz W2
cmp al,'3'
jz W3
cmp al,'4'
jz W4
cmp al,'5'
jz W5
cmp al,'6'
jz W6
jmp W7
W1:
mov ah,09h
mov dx,offset F1
int 21h
jmp INP
W2:
mov ah,09h
mov dx,offset F2
int 21h
jmp INP
W3:
mov ah,09h
mov dx,offset F3
int 21h
jmp INP
W4:
mov ah,09h
mov dx,offset F4
int 21h
jmp INP
W5:
mov ah,09h
mov dx,offset F5
int 21h
jmp INP
W6:
mov ah,09h
mov dx,offset F6
int 21h
jmp STOP
W7:
mov ah,09h
mov dx,offset F7
int 21h
jmp INP
STOP:
mov ax,4c00h
int 21h
code ends
end start
代码说明:
本代码是通过模拟一个洗衣机的使用来实现模拟一个DOS下的功能菜单的实现。
代码结果:
编写汇编程序实现从键盘输入一个数字,然后判断其奇偶性;如果为奇数,则在屏幕输出1,否则输出0.
题目分析:
此题为典型的分支结构程序,主要要解决以下几个难点:
接受用户的输入 (调用DOS中断的01H号功能实现)
奇偶数的判断 (利用RCR循环右移一位得到输入数值的最低位,判断是0还是1)
根据奇偶数条件的跳转
条件输出 (调用DOS中断的02H号功能实现)
代码实现:
code segment assume cs:code start: mov ah,01h ;调用DOS中断的01号功能,输入字符,存储于al中 int 21h cmp al,'0' ;输入字符存在al寄存器中,使其与0比较 jb start ;如果其asc码比'0'小,则继续输入 cmp al,'9' ;与9比较 ja start ;如果比输入的asc码比'9'还大,则继续输入 clc ;CF标志清零 rcr al,1 ;将al的低1位右移出道cf中 jnc EVE ;如果cf!=1,则判断此数为偶数,则跳转到偶数的操作 mov al, 31h ;如果没有跳转,则为奇数,则输出字符为1,及其asc码为31H jmp DISP ;强制跳转到输出分支 EVE: mov al,30h ;0的asc码为30H DISP: mov ah,02h ;调用DOS中断的02H功能,实现输出字符 mov dl,al ;输入字符即为al,将其赋值给dl寄存器,输出 int 21h mov ax,4c00h int 21h code ends end start
代码不足:
字符输入输出显示格式比较丑陋,且不友好,可以考虑添加回车加换行等。
————————————————————————————————
题目要求:
利用汇编代码实现一个dos功能菜单
题目分析:
主要难点在于字符串输出,字符的输入;解决办法,可以调用dos中断的09H功能输出字符串,01H号功能输入字符。
代码实现:
data segment
MENU db 'Action: ',0dh,0ah;提示信息准备
db 'This is a washing machine!',0dh,0ah
db 'You can use the MENU to choose function!',0dh,0ah
db '----------------------------------------',0dh,0ah
db '1.open the cap of washing machine ! ',0dh,0ah
db '2.close the cap !',0dh,0ah
db '3.set washing time !' ,0dh,0ah
db '4.start the washing machine !',0dh,0ah
db '5.stop the washing machine !',0dh,0ah
db '6.quit !',0dh,0ah
db '----------------------------------------',0dh,0ah,'$'
INPUT db 'input your choose: $'
F1 db 0dh,0ah,'cap opened, clothes puted in !',0dh,0ah,'$'
F2 db 0dh,0ah,'cap closed !',0dh,0ah,'$'
F3 db 0dh,0ah,'set washing time to 5 min!',0dh,0ah,'$'
F4 db 0dh,0ah,'washing machine has started',0dh,0ah,'$'
F5 db 0dh,0ah,'succeed in washing the clothes !',0dh,0ah,'$'
F6 db 0dh,0ah,'quitd! thanks to using this washing machine !',0dh,0ah,'$'
F7 db 0dh,0ah,'no this choose ,please reinput your choose !',0dh,0ah,'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ah,09h;调用09H号功能输出MENU信息。
mov dx,offset MENU
int 21h
INP:
mov dx,offset INPUT ;调用09H号功能输出提示信息INPUT
int 21h
mov ah,01h;调用01H号功能输入用户的选择
int 21h
cmp al,'1';根据用户的输入,实现对应的输出
jz W1
cmp al,'2'
jz W2
cmp al,'3'
jz W3
cmp al,'4'
jz W4
cmp al,'5'
jz W5
cmp al,'6'
jz W6
jmp W7
W1:
mov ah,09h
mov dx,offset F1
int 21h
jmp INP
W2:
mov ah,09h
mov dx,offset F2
int 21h
jmp INP
W3:
mov ah,09h
mov dx,offset F3
int 21h
jmp INP
W4:
mov ah,09h
mov dx,offset F4
int 21h
jmp INP
W5:
mov ah,09h
mov dx,offset F5
int 21h
jmp INP
W6:
mov ah,09h
mov dx,offset F6
int 21h
jmp STOP
W7:
mov ah,09h
mov dx,offset F7
int 21h
jmp INP
STOP:
mov ax,4c00h
int 21h
code ends
end start
代码说明:
本代码是通过模拟一个洗衣机的使用来实现模拟一个DOS下的功能菜单的实现。
代码结果:
相关文章推荐
- 汇编学习---循环结构程序设计
- C++学习笔记(第三章 多分支结构 循环程序设计 之一)
- 算法学习之分支结构程序设计
- C++学习笔记(第三章 多分支结构 循环程序设计 之二)
- PHP学习笔记——流程控制概述, PHP分支结构;
- 第三章数程序设计初步--分支结构项目3利息计算器
- shell脚本学习总结09--分支与循环结构
- 第12周 《C语言及程序设计》实践项目——用if语句实现分支结构
- 《C语言及程序设计》实践参考——双分支结构流程图-大值
- 分支程序设计02 - 零基础入门学习C语言11
- Go lang 学习第三篇for循环,if/else分支,分支结构
- 分支程序设计05 - 零基础入门学习C语言14
- C++学习 【3.3】 程序设计初步--选择结构和if语句
- 分支结构程序设计 项目1-正差值
- 黑马程序员---C语言学习笔记之分支结构if语句与switc语句的详解
- 2014-C第2周项目—— 用if语句实现分支结构程序设计 小玩意儿-在4~100内验证哥德巴赫猜想
- 汇编学习---顺序程序设计
- 【C语言学习】-02 分支结构
- 【算法竞赛入门经典学习日记】第二章 循环结构程序设计
- 分支程序设计05 - 零基础入门学习C语言14