匯編語言課程設計實驗要求
㈠ 匯編語言程序設計實驗報告
你的程序不完整,以下為完整程序:
datareasegment
DATA1dw5
DATA2dw4
DATA3dw?
DATA4dw?
datareaends
prognamsegment
mainprocfar
assumecs:prognam,ds:datarea
start:movax,segdatarea
movds,ax
moves,ax
movax,data1
movbx,data2
addax,bx
movDATA3,ax
movax,DATA1
subax,bx
movDATA4,ax
movah,4ch
int21h
ret
mainendp
prognamends
endstart
㈡ 匯編語言課程設計
建議參考吳秀清的微機教材
㈢ 王爽匯編語言課程設計2實驗環境具體怎麼弄,還有程序設計好後是直接在DOS下運行還是在軟盤下
其實很簡單:下載一個masm6.15的壓縮文件(直接在網路主頁里搜「masm6.15下載」),大概4.32M,下載後,解壓縮到D:盤,將文件夾的名字改為masm,這是因為解壓後的名字默認為masm 615,中間有個空格不太好(因為再DOS下對於有空格的文件夾的名字要用雙引號括起來,比較麻煩)。
1、用記事本或其他文本編輯器(例如Editplus)寫好匯編程序,保存為.asm格式的文件(直接將後綴名修改為.asm),例如文件名為test.asm,放到D:盤。
2、在windows下點擊「開始」,再點擊「運行」,在編輯框中輸入cmd,切換到DOS界面下。進入D:盤——d:,再回車。
3、在當前目錄(D:盤下)用cd命令,切換到剛才解壓到D:盤的masm目錄下的BIN目錄下——
cd masm\bin
4、 然後生產目標文件,使用命令——masm D:\test.asm(後綴名可以省略,默認為.asm),生成.obj的目標文件,該目標文件在D:\masm\BIN目錄下。將生成的.obj文件拷貝到D:盤根目錄下(其實不用拷貝也行,只要下面能找到該.obj文件就行,個人建議將.obj文件和.asm文件放到一起比較清楚)。
5、再使用命令將.obj目標文件鏈接成.exe文件(還在D:\masm\BIN目錄下使用命令)——
link D:\test.obj(後綴名可以省略,默認為.obj),出現選項讓你選,第一個選項是讓你輸入生成的.exe文件的名字,例如輸入——D:\test.exe(後綴名可以省略,默認為.exe),其他選項暫時可以不考慮(其實看他們的名字就能看懂)。這樣就在D:盤下生成了一個test.exe的可執行文件。
6、雙擊該文件,發現屏幕閃了一下就沒了,說明程序是運行了。要想看到程序每一步的執行情況,那麼生成的test.exe文件要在Debug模式下運行。在DOS界面下(任何目錄)輸入命令——debug D:\test.exe(此時後綴名.exe必須要有),回車後就開始運行該可執行文件了。按照王爽那本書上從第91頁開始的程序執行過程的跟蹤使用的一些命令,例如:r命令、u命令、d命令、g命令、p命令等的使用,就能查看和控製程序的運行了。
㈣ 匯編語言課程設計
我覺得你這個要求也太苛刻了吧!
㈤ 求單片機課程設計實驗 用匯編語言,基於51單片機的定時鬧鍾
MOV AL,0FFH
MOV DX,300H
OUT DX,AL
CALL CLEAR ;LCD 清除
LEA BX,HZ_TAB
MOV CH,2 ;顯示第2行信息
CALL LCD_DISP
LEA BX, HZ_TAB
MOV CH,3 ;顯示第3行信息
CALL LCD_DISP
l1: JMP L1
CLEAR PROC
MOV AL,0CH
MOV DX,IO_ADDRESS
OUT DX,AL ;設置CLEAR命令
CALL CMD_SETUP ;啟動LCD執行命令
RET
㈥ 匯編語言實驗
(NAME=STUDENTSLOG1,
FILENAME='E:\DATA\STUDENTSLOG1.ldf',
SIZE=5,
MAXSIZE=50,
FILEGROWTH=1),
(NAME=STUDENTSLOG2,
FILENAME='E:\DATA\STUDENTSLOG2.ldf',
SIZE=5,
MAXSIZE=50,
filegrowth=1)
㈦ 匯編語言課程設計求解
.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 ;編譯到此結束