匯編語言課程設計案例精編
① 匯編語言課程設計求解
.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
「霓紅燈」的模擬顯示
還是出去買本書吧.
<匯編語言課程設計案例精編>