汇编语言课程设计案例精编
① 汇编语言课程设计求解
.modelsmall
.data
stuinfodb'XiaomingLi,Num.00001',0dh,0ah,'$'
msg0db'InputN(2<N<50):$'
msg1db0dh,0ah,'Inputisinvalid,reinput:$'
crlfdb0dh,0ah,'$'
Ndb0
.code
.startup
leadx,stuinfo
movah,9
int21h
leadx,msg0
int21h
movbl,10
r0:
movbh,0
r1:;readN
movah,1
int21h
cmpal,0dh
jzr2
cmpal,'0'
jbe0
cmpal,'9'
jae0
andal,0Fh
xchgal,N
mulbl
addN,al
incbh
cmpbh,2
jzr2
jmpr1
r2:
moval,N
cmpal,3
jbe0
cmpal,50
jaee0
movah,9
leadx,crlf
int21h
movbx,0
movax,2
c0:
addbx,ax
callprint
addax,2
cmpal,N
jac1
callprintplus
jmpc0
c1:
movax,0e3dh;'=':3dh
int10h
movax,bx
callprint
jmpexit
e0:
movah,9
leadx,msg1
int21h
movN,0
jmpr0
exit:
.exit0
printplusprocnear
pushax
movax,0e2bh;'+':2bh
int10h
popax
ret
printplusendp
printprocnear
pushax
pushbx
movbx,10
xorcx,cx
q0:
xordx,dx
divbx
xordx,0e30h
pushdx
inccx
cmpax,0
jnzq0
q1:
popax
int10h
loopq1
popbx
popax
ret
printendp
END
② 汇编语言课程设计求程序!题目下面!
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
push dx
lea dx,Str_Addr
mov ah,9
int 21h
pop dx
EndM
; -----------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
Output_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Output_Chr endp
; -----------------------------------------
; 功能:输出回车换行
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
; -----------------------------------------
; 功能:取光标位置
; 入口:无
; 出口:DH=行号,DL=列号
GetCursor Proc Near
PUSH AX
PUSH BX
PUSH CX
XOR BX,BX
MOV AH,3
INT 10H
MOV Cursor_Row,DH
MOV Cursor_Col,DL
POP CX
POP BX
POP AX
RET
Cursor_Row DB ?
Cursor_Col DB ?
GetCursor EndP
; -----------------------------------------
; 功能:置光标位置
; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标)
SetCursor Proc Near
PUSH CX
PUSH BX
PUSH AX
MOV DH,Cursor_Row
MOV DL,Cursor_Col
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
POP CX
RET
SetCursor EndP
; -----------------------------------------
; 功能:将AL中的低4位二进制数转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AL=转换后的ASCII码
AL_ASCII Proc Near
cmp al,10 ;AL<10?
jb @@To_ASCII ;AL<10,按数字处理
add al,7 ;AL>=10,按大写字母处理
@@To_ASCII: add al,'0' ;转换成相应的数字或大写字母
ret
AL_ASCII EndP
; -----------------------------------------
; 功能:将AL中的字节数据转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AX=转换后的ASCII码
Byte_ASCII Proc Near
push cx
mov cx,4
xor ah,ah ;将AH置0
shl ax,cl ;将AX左移4位
shr al,cl ;将AL右移4位
xchg ah,al
call AL_ASCII ;调用子程序,将AL中的值转换成相应的ASCII码
xchg ah,al
call AL_ASCII
xchg ah,al
pop cx
ret
Byte_ASCII EndP
; -----------------------------------------
; 功能:将AL中的字节数据转换成十六进制显示的ASCII码,并在当前光标位置显示
; 入口:AL
; 出口:AX=转换后的ASCII码
ByteD_ASCII Proc Near
push dx
push ax
call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码
cmp al,'9'
jbe $+7
mov dl,'0'
call Output_Chr ;显示一个字符
mov dl,al
call Output_Chr ;显示一个字符
mov dl,ah
call Output_Chr ;显示一个字符
mov dl,'H'
call Output_Chr ;显示一个字符
pop ax
pop dx
ret
ByteD_ASCII EndP
; -----------------------------------------
; 功能:将AX中的字数据转换成十六进制显示的ASCII码,并在当前光标位置显示
; 入口:AX
WordD_ASCII Proc Near
push dx
push ax
push ax
xchg ah,al
call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码
cmp al,'9'
jbe $+7
mov dl,'0'
call Output_Chr ;显示一个字符
mov dl,al
call Output_Chr ;显示一个字符
mov dl,ah
call Output_Chr ;显示一个字符
pop ax
call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码
mov dl,al
call Output_Chr ;显示一个字符
mov dl,ah
call Output_Chr ;显示一个字符
mov dl,'H'
call Output_Chr ;显示一个字符
pop ax
pop dx
ret
WordD_ASCII EndP
; -----------------------------------------
; 功能:输入内存单元的段地址或偏移地址
; 入口参数:无
; 出口参数:若直接回车(没有输入地址)或地址中含有无效字符,进位标志置位;
; 否则,进位标志清位,BX=有效地址
Input_Addr Proc Near
lea dx,Buffer ;字符串缓冲区地址
mov ah,0ah
int 21h
lea si,Buffer[1] ;实际输入的字符数地址
lodsb ;读入实际输入的字符数
test al,0ffh
jz @@Invalid
xor bx,bx ;有效地址初值
mov cl,al
xor ch,ch
@@Checking: lodsb ;读入一个字符
cmp al,'0' ;字符<'0'?
jb @@Letter ;是,判断是否字母
cmp al,'9' ;字符<='9'?
jbe @@Valid ;是,累加有效地址
@@Letter: mov ah,al
and ah,0dfh
cmp ah,'A' ;字符<'A'?
jb @@Invalid ;是,无效字符
cmp ah,'Z' ;字符<'Z'?
ja @@Invalid ;是,无效字符
@@Valid: and al,0fh
push cx
mov cx,4
shl bx,cl ;有效地址左移4位
or bl,al ;加上低4位
pop cx
loop @@Checking ;下一位
clc ;进位标志清位
ret
@@Invalid: stc ;进位标志置位
ret
Input_Addr EndP
; -----------------------------------------
Segment_Str db 'Please input a segment address(heximal): $'
Offset_Str db 13,10,'Please input a offset address(heximal): $'
Memory_Addr dd ? ;内存地址。偏移地址在前、段地址在后
Press_Key db 7,13,10,13,10,'Press any key to exit...$'
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
cld
Output Segment_Str ;提示输入段地址
call GetCursor ;取光标位置
@@Segment: call SetCursor ;置光标位置
call Input_Addr ;输入地址
jc @@Segment ;若地址无效,重新输入
mov word ptr Memory_Addr[2],bx ;保存段地址
Output Offset_Str ;提示输入偏移地址
call GetCursor
@@Offset: call SetCursor
call Input_Addr
jc @@Offset
mov word ptr Memory_Addr,bx ;保存偏移地址
call Output_CTLF ;输出一个回车、换行
call Output_CTLF
mov dl,'['
call Output_Chr
mov ax,word ptr Memory_Addr[2] ;取内存单元段地址
call WordD_ASCII ;将AX中的字数据转换成十六进制显示的ASCII码,并在当前光标位置显示
mov dl,':'
call Output_Chr
mov ax,word ptr Memory_Addr ;取内存单元偏移地址
call WordD_ASCII
mov dl,']'
call Output_Chr
mov dl,'='
call Output_Chr
lds si,Memory_Addr ;装入有效地址
lodsb ;读入这个内存单元的一个字节
push cs
pop ds
call ByteD_ASCII ;将AL中的字节数据转换成十六进制显示的ASCII码
Exit_Key: Output Press_Key
mov ah,1
int 21h
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Buffer db 5 ;段地址、偏移地址输入缓冲区
Code ENDS
END Start ;编译到此结束
③ 汇编语言课程设计题:
都是没人回答的问题,好郁闷
④ 汇编语言课程设计题目
命令行参数编程:
还需要什么提示呢
⑤ 汇编语言课程设计
杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。
⑥ 用汇编语言实现字符图案显示的课程设计案例
想先问一下,图案前面是有几个空格....
下面程序是显示:
*
**
***
****
不知道是不是想要的结果...:)
data segment
disp db "*$"
disp1 db 0ah,0dh,'$'
ends
stack segment
dw 128 p(0)
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
mov cx,1
jxad:
inc cx
push cx
dec cx
jx:
lea dx, disp
mov ah, 9
int 21h
loop jx
lea dx,disp1
mov ah,9
int 21h
pop cx
cmp cx,5
jne jxad
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start
下面这个可能可以吧...很简单..:)
*(3个空格)
* *(2个空格)
* * *(1个空格)
* * * *(没有空格)
data segment
disp db "* $"
disp1 db 0ah,0dh,"** $"
disp2 db 0ah,0dh,"*** $"
disp3 db 0ah,0dh,"****$"
ends
stack segment
dw 128 p(0)
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
lea dx, disp
mov ah, 9
int 21h
lea dx,disp1
int 21h
lea dx,disp2
int 21h
lea dx,disp3
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start
⑦ 汇编语言课程设计 数字电子表
案例25
用中断方式实现PC机间的相互通信
第10章
综合程序设计
案例26
钟表显示
案例27
“霓红灯”的模拟显示
还是出去买本书吧.
<汇编语言课程设计案例精编>