用汇编语言编写一段程序?求解:

用汇编语言编写一段程序,能够根据键盘输入的1~9之间的数字,显示如下图形,若输入为偶数则加一,形成奇数。要求主程序完成键盘输入,判别奇偶数,转换成奇数,而子程序根据该奇数形成显示图形,图形如下:
* * * * * * *
* * * * *
* * *
*

第1个回答  2010-01-04
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
push ax
lea dx,Str_Addr
mov ah,9
int 21h
pop ax
EndM
; -------------------------------------
Prompt_Str db 'Please input a number(1-9): $'
Press_Key db 13,10,10,10,'The complated. Press any key to exit...$'
Start: push cs
pop ds
push cs
pop es
Input_Num: Output Prompt_Str ;提示输入一位数
@@Input_Num: mov ah,1
int 21h
cmp al,27 ;Esc?
jz Exit_Proc ;结束程序
cmp al,'1' ;<'1'?
jb @@Input_Num ;是,超出范围,重新输入
cmp al,'9' ;>'9'?
ja @@Input_Num ;是,超出范围,重新输入
and ax,0fh
test ax,1
jnz $+3 ;奇数,不调整
inc ax ;偶数,加1调整为奇数
mov bp,ax
inc ax
shr ax,1
mov cx,ax ;行数
mov ah,0eh
mov al,13
int 10h
mov al,10
int 10h
Disp_Line: push cx
mov cx,bp ;列数
Disp_Colomn: mov al,'*'
int 10h
mov al,20h
int 10h
loop Disp_Colomn
dec bp
dec bp
mov al,13
int 10h
mov al,10
int 10h
pop cx
loop Disp_Line
jmp Input_Num
; -------------------------------------
Exit_Proc: Output Press_Key ;提示操作完成,按任意键结束程序
mov ah,1
int 21h
mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
相似回答
大家正在搜