




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
匯編實驗
實驗一順序與分支程序設計
-'實驗目的
1)掌握順序程序設計方法。
2)掌握分支程序的結構及分支程序的設計,調試方法。
2)學習數據傳送及算術和邏輯運算指令的用法。
3)熟悉在PC機上建立、匯編、連接、調試和運營匯編語言程序的過程。
二、實驗內容
1)有一字變量BUF1是以原碼表達的有符號數,規定將其轉換為反碼和補
碼,分別存入BUF2和BUF3單元,并在屏幕上顯示出來。
2)有兩個兩字節無符號數分別放在存儲單元A、B起始的緩沖器中,求其
和,結果放在A起始的緩沖區并在屏幕上顯示。相加若有進位不存入存儲單元。
。3)在BUF和BUF+1、BUF+2單元分別放有一個無符號字節型數,編程序將
其中最大數存入MAX單元,并在屏幕上顯示。
。4)規定同上,只是比較的數為有符號數。
5)將1000H單元開始的10個字節數,采用奇偶校驗,將奇數在前偶數在后
仍存回原數據區。本實驗規定在DEBUG調試狀態下進行,涉及匯編程序、運營
程序、檢查結果。
6)從鍵盤上接受一位十進制數X,計算Y值,并以十六進制形式顯示出來,
Y按下列公式計算。
-X?+XQX=3)
_X2-2X(X=4)
-1X2(X=5)
X2/2(X=6)
7)從鍵盤上接受兩個一位十六進制數X和Y,然后再輸入一個A-D之間的
一個字符,按下列規定計算。
a)當輸入字符為A,則計算X+Y,并以十六進制形式顯示出來
b)當輸入字符為B,則計算|X-Y|,并以十六進制形式顯示出來
c)當輸入字符為C,則計算X*Y,并以十六進制形式顯示出來
d)當輸入字符為D,則計算X/Y,并以十六進制形式顯示出來
三'實驗設備
PC機一臺
四'實驗準備
1)分析題目,將程序中的原始數據和最終結果的存取方法擬定好。
2)畫出流程圖。
3)寫出源程序。
4)對程序中的結果進行分析,并準備好上機調試與用匯編程序及匯編調試
的過程。
五、實驗環節
1)輸入源程序。
2)匯編、連接程序,生成.EXE文獻,執行文獻,檢查結果。
六'實驗報告的規定
1)列出源程序,說明程序的基本結構,涉及程序中各部分的功能。
2)說明程序中各部分所用的算法。
3)說明重要符號和所用到寄存器的功能。
。4)總結為什么在設計分支程序時必須解決三個問題:判斷、轉向和定標號。
5)說明標志位CF、SF和OF的意義。
6)上機調試過程中碰到的問題是如何解決的。
7)對調試源程序的結果進行分析。
Exami:
DATASEGMENT;數據段
BUF1DW7898H
BUF2DW4DUP(0),0AH,ODH,7$'
BUF3DW4DUP(0),'$'
DATAENDS;數據段結束
CODESEGMENT;代碼段
ASSUMECS:CODE,DS:DATA;段寄存器關聯說明
偽指令
BEGIN:MOVAX,DATA
MOVDS,AX;將數據段的基地址裝入數據
段寄存器DS
MOVAX,BUF1;將字型變量BUF1的值裝入AX
寄存器
ADDAX,0;AX寄存器里的數據加0,以便進行轉移
測試
JSNEXT;判斷(AX)
的正負,若為負則轉到NEXT,為正則往下順序執行。
MOVBUF2,AX;為正,反碼與原碼
同樣
MOVBUF3,AX;為正,補碼與
原碼同樣
JMPEEE
NEXT:ANDAX,7FFFH;將符號位變為0
NOTAX;求
反碼
MOVBUF2,AX;WB
UF1的反碼裝入BUF2
INCA
X;求補碼
MOVBUF3,AX;將補碼
裝入BUF3
EEE:MOVCX,0004H;將0004H裝入CX
計數器寄存器中
MOVDI,OFFSETBUF2;將口1指向
變量BUF2開始的存儲單元
MOVDX,[DI]:^DI
所指的數據裝入DX寄存器中
ADDDI,03;將。1指
針下移三個字
BBB:MOVAX,DX;將口X中的內容裝
入AX寄存器中
ANDAX,00OFH;即使B
UF2的低四位不變,其余均變為0
CMPAL,0AH;比較[AL]與
OAH的大小,以便能對的轉換為0-9的ASCH值
JBQQQ;若[AL]<0
AH,則轉到QQQ,否則,順序執行
ADDAL,07H;由于[ALD0AH,
所以[AL]+07H,使得AL能轉換成相應數字的ASCH值
QQQ:ADDAL,30H;將將L]轉換成相
應數字的ASCH值
MOV[DI],AL;將人!,中的內容裝
入以DS中的內容為段基地址,以DI的內容為偏移地址的存儲單元中
DECDI;DI=DI-1,即將
DI指向前一個存儲單元
PUSHCX;保存CX寄存器的內容
MOVCL,04H;給?L寄存器賦值為0
4H
SHRDX,CL;將皿(]邏輯
右移四位
POPCX;恢復CX寄存器的內容
LOOPBBB;循環判斷語句,CX=CX-
1,若CX不等于0,則轉到BBB,將下一個低四位存入存儲單元中,否則循環結
束
MOVCX,0004H;給。*寄存器賦值為0004H
MOVSI,OFFSETBUF3;將51指向變量BUF3開
始的存儲單元
MOVDX,[SI];將$1所指的數據裝入DX
寄存器中
ADDSI,03H;將DI指針下移三個字
CCC:MOVAX,DX;將DX中的內容裝入AX寄存器中
ANDAX,OOOFH;即使BUF3的低四位不變,其余
均變為0
CMPAL,0AH;比較[AL]與0AH的大小,以便
能對的轉換為0-9的ASCH值
JBDDD則轉到DDD,否貝1
順序執行
ADDAL,07H;由于[AL]>0AH,所以[AL]
+07H,使得AL能轉換成相應數字的ASCII值
DDD:ADDAL,30H;將[AL]轉換成相應數字的ASCH
值
MOV[SI],AL;將AL中的內容裝入以DS
中的內容為段基地址,以SI的內容為偏移地址的存儲單元中
DECSI;SI=SI-1,即將SI指向前一個
存儲單元
PUSHCX;保存CX寄存器的內容
MOVCL,04H;給CL寄存器賦值為()
4H
SHRDX,CLM等[DX]邏輯右移四位
POPCX;恢復CX寄存器的內容
LOOPCCC;循環判斷語句,CX=CX-1,若
CX不等于0,則轉到CCC,將下一個低四位存入存儲單元中,否則循環結束
MOVDX,OFFSETBUF2;將BUF2的偏移地址裝
入DX寄存器中
MOVAH,09H
INT21H;在屏幕上顯示BUF1的反碼
MOVDX,OFFSETBUF3
MOVAH,09H
INT21H;在屏幕上顯示BUF1
的補碼
MOVAH,4CH
INT21H;帶返回碼終止
CODEENDS
ENDBEGIN
c\C:\IIHD0IS\systeB32\cBd.exe日回口
Copyright<C>MicrosoftCorp1981-1985,1987.Allrightsreserued.
Objectfilename[a.OBJ]:
SourcelistingCNUL.LST]:
Cross-reference[NUL.CRF]:
50672?415568Bytessymbolspacefree
0WarningErrors
0SeuereErrors
D:Xhuibian>linka
Microsoft<R>8086ObjectLinkerUersion3.05
Copyright<C>MicrosoftCorp1983,1984,1985.Allrightsreserved.
RunFile[A.EXE]:
ListFileCNUL.MAP]:
Libraries[.LIB]:
Warning:nostacksegment
D:\huibian>a.exe
ECB7
ECB8
D'htiibiant__________________________________________________________________________________
Exam2:
DATASEGMENT;數據段
ADB34H,18H,2DUP(0),$';定義字節型變
量,其后的每操作數都占有一個字節
BDB56H,83H;定義字節型變量,其后的每操
作數都占有一個字節
DATAENDS;數據段結束
CODESEGMENT;代碼段
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX;將數據段基地址裝入數據段寄存器DS
MOVAL,A;將A所指的數裝入AL寄存器中
MOVBL,B;將8所指的數裝入BL寄存器中
ADDAL,BL;AL+BL->AL
MOVAH,A+l;將A所指的下一個字節的數據裝
入AH
MOVBH,B+l;將B所指的下一個字節的數據裝入
ADCAH,BH;AH與BH進行帶進位加法
MOVA,AL;將第一個無符號數的相加結果放在以A起
始的緩沖區
MOVA+1,AH;將第二個無符號數的相加結果放在以A+1起
始的緩沖區
MOVCX,0014H;以下是將數據轉換為相應的ASCH值
MOVDIOFFSETA
MOVDX,[DI]
ADDDI,03
NEXT:MOVAX,DX
ANDAX,OOOFH
CMPAL,0AH
JBQQQ
ADDAL,07H
QQQ:ADDAL,30H
MOV[DI],AL
DECDI
PUSHCX
MOVCL,14
SHRDX,CL
POPCX
LOOPNEXT
MOVDX,OFFSETA
MOVAH,09H
INT21H;在屏幕上顯示結果
MOVAH,4CH
INT21H;帶返回碼終止
CODEENDS
ENDSTART
C<C:\IIID0¥S\systeB32\cBd.exe日日日
Microsoft<R>MacroAssemblerUersion5.00
Copyright<C>MicrosoftCorp1981-1985,1987.Allrightsreserved.
Objectfilename[b.OBJ]:
Sourcelisting[NUL.LST]:
Cross-referenceCNUL.CRF]:
50672+415568Bytessymbolspacefree
0WarningErrors
0SeuereErrors
D:\huibian>linkb
Microsoft<R>8086ObjectLinkerUersion3.05
Copyright<C>MicrosoftCorp1983,1984,1985.Allrightsreserued.
RunFile[B.EXE]:
ListFile[NUL.MAP]:
Libraries[.LIB]:
Uarning:nostacksegment
D:\huibian>b.exe
9B8A
D'huibian)
Exam3:
STACKSEGMENTSTACK;堆棧段
DB1000DUP(0);定義其后的每個操作數都占有一個字節
STACKENDS;堆棧段結束
DATASEGMENT;數據段
BUFDB72H,34H,1FH;定義字節型變量,其后的每
操作數都占有一個字節
MAXDB2DUP(?),;定義字節型變量,其后
的每操作數都占有一個字節
DATAENDS;數據段結束
CODESEGMENT;代碼段
ASSUMECS:CODE,DS:DATA,SS:STACK
BEGIN:MOVAX,DATA
MOVDS,AX;將數據段基地址裝入數據段寄存
器DS
MOVAL,BUF;將BUF所指向的一個字節數據裝入
AL
CMPAL,BUF+1;比較BUF與BUF+1大小
JNBLP1;假如BUF不小于BUF+1,則轉到Ipl,否
則順序向下執行
MOVAL,BUF+1;將8詼+1所指向的一個字節數據裝入
AL
LP1:CMPAL,BUF+2JWBUF^HBUF1
中較大的一個和BUF+2比較大小
JAELP2;假如BUF2小,則轉到lp2,否則執行順序向下
執行
MOVAL,BUF+2;此時BUF2為三個數中最大的一個,將最
大數裝入AL寄存器中
LP2:MOVCX,04H;以下是將輸出的最大數轉換為相應的A
SCH值MOVDI,OFFSETMAX
MOVDL,AL
INCDI
LP3:ANDAL,OFH
CMPAL,OAH
JBLP4
ADDAL,07H
LP4:ADDAL,30H
MOV[DI],AL
DECDI
PUSHCX
MOVCL,03H
SHRDL,CL
POPCX
MOVAL,DL
LOOPLP3
MOVDX,OFFSETMAX
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
仔,命令提示符!
Microsoft<R>MacroAssemblerUersion5.00
Copyright<C>MicrosoftCorp1981-1985,1987.Allrightsreserved.
Objectfilename[a.OBJ]:
Sourcelisting[NUL.LST]:
Cross-reference[NUL.CRF1:
50652+415812Bytessymbolspacefree
0WarningErrors
0SeuereErrors
D:\huibian>1inka
Microsoft<R>8086ObjectLinkerUersion3.05
Copyright<C>MicrosoftCorp1983,1984.1985.Allrightsreserued.
RunFile[A.EXE]:
ListFile[NUL.MAP]:
Libraries[.LIB]:
D:\huibian>a.exe
70
D:\huibian>_
Exam4:
STACKSEGMENTSTACK
DB1000DUP(0)
STACKENDS
DATASEGMENT
BUFD
B98H,75H,
32H
MAXDB4DUP(?),'$'
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
BEGIN:MOVAX,DATA
MOVDS,AX
MOVAL,BUF
CMPAL,BUF+1
JGLP1;JG為比較兩個有帶符號數的
大小,比較BUF和BUF1的大小,若BUF>BUF1,則跳轉到1p1繼續執行,
否則順序向下執行
XCHGAL,BUF+1;互換AL寄存
器中的內容和BUF1,使AL寄存器中存放BUF和BUF1中較大的一個
LP1:MOVMAX,AL
JGElp2。;比較兩個帶符號數,假如BUF2小,則轉到lp2,否則執行
順序向下執行
MOVAL,BUF+2。
Lp2:MOVMAX,AL*以下是將輸出的最大數轉換為相應的ASCII值,
與1)題相同
MOVCX,04H
MOVDI,OFFSETMAX
MOVDL,[DI]
INCDI
LP3:MOVAL,DL
ANDAL,OFH
CMPAL,0AH
JBLP4
ADDAL,07H
LP4:ADDAL,3OH
MOV[DI],AL
DECDI
PUSHex
MOVCL,02
SHRDX,CL
POPCX
LOOPLP3
MOVDX,OFFSETMAX
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
京命令提示符-Inix
D:\huibian>masna
Microsoft<R>MacroAssenblerUersion5.00
Copyright<C>MicrosoftCorp1981-1985,1987.Allrightsreserued.
Objectfilename[a.OBJ]:
Sourcelisting[NUL.LST]:
Cross-reference[NUL.CRF]:
50652?415812Bytessymbolspacefree
0WarningErrors
0SeuereErrors
D:\huibian>linka
Microsoft<R>8086ObjectLinkerUersion3.05
Copyright<C>MicrosoftCorp1983,1984,1985.Allrightsreserved.
RunFile[A.EXE]:
ListFile[NUL.MAP3:
Libraries[.LIB]:
D:\huibian>a.exe
75
D:\huibian>_
實驗二循環與子程序程序設計
一'實瞼目的
1)加深對循環結構的理解。
2)掌握循環程序的設計方法。
3)學習子程序的定義和調用方法。
4)掌握子程序、子程序的嵌套、遞歸子程序的結構。
5)掌握子程序設計、編制及調試。
6)純熟掌握DEBUG的常用命令,學會用DEBUG調試程序。
二'實驗內容
1)編制程序計算S=1+2?3+3?4+4?5+.......+N(N+1)+...
直到N(N+1)大于200為止,并將結果由屏幕上顯示出來。
2)將從3000H內存單元開始的100個字節存儲單元所有清0。
3)編制在屏幕上顯示九九乘法表的程序。
4)編制在屏幕上顯示用*組成的三角形的程序。
5)設有五個字數據存放在以BUF為首地址的內存單元中,規定采用調用多個
字數據相加的子程序方法編程,和的低位字放在RESULT單元,和的高位字放在
RESULT+2單元,并將結果顯示在屏幕上。
6)編寫一個遞歸子程序,計算指數函數X"的值,其中X,n從鍵盤輸入。
三'實驗設備
PC機一臺
四、實驗環節
1)按程序流程圖編制實驗程序。
2)輸入源程序。
3)匯編、連接程序,執行程序,檢查結果。
4)對內存單元3000H開始的100個存儲單元用E命令輸入任意數。
5)程序的執行可用DEBUG的G命令,也可用T命令單步跟蹤執行。
6)用D命令檢查執行結果。
五、實驗報告的規定
1)列出源程序。
2)對程序中用到的寄存器說明其功能。
3)總結計數控制循環程序的設計方法。
。4)說明如何使用DEBUG進行程序調試的。調試過程中所碰到的問題是如何
解決的。
、Examl:
DATASEGMENT
BUFDB,S=l+2X3+3X4+4X5+???+N(N+1)+…,S'
RESDW4DUP(0),芍'
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVDX,0FFSETBUF
MOVAH,09H
INT21H
MOVDX,1
MOVBL,2
NEXT:MOVAL,BL
INCBL
MULBL
ADDDX,AX
CMPAX,200
JNANEXT
MOVCX,0004H
MOVDI,OFFSETRES
ADDDI,03H
NEXT1:MOVAX,DX
ANDAX,000FH
CMPAL,0AH
JBNEXT2
ADDAL,07
NEXT2:ADDAL,3OH
MOV[DI],AL
DECDI
PUSHex
MOVCL,04
SHRDX,CL
POPex
LOOPNEXT1
MOVDX,OFFSETRES
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
|Bv|C:\TIin)OTS\syste?32\c?d.exe日回Q
Microsoft<R>MacroAssemblerUersion5.00
Copyright<C>MicrosoftCorp1981-1985,1987.Allrightsreserved.
Objectfilename[a.OBJ1:
Sourcelisting[NUL.LST]:
Cross-reference[NUL.CRFJ:
50664+415608Bytessymbolspacefree
0WarningErrors
0SeuereErrors
C:\huibian>linka
Microsoft<R>8086ObjectLinkerUersion3.05
Copyright<C>MicrosoftCorp1983,1984,1985.Allrightsreserved.
BunFile[A.EXEJ:
ListFile[NUL.MAP3:
Libraries[.LIB]:
Uarning:nostacksegment
C:\huibian>a.exe
K=1+2*3+3*4+4?5+£i+N<N+l>+ii=045F
C:\huibian>
Exam3:
DATASEGMENT
ATADDB?,2AH,?,3DH,?,?,2OH,$
ATAD1DB?,2AH,?,3DH,?,?,ODH,0AH,f$'
DATAENDS
STACKSEGMENTSTACK
DB2OHDUP(O)
STACKENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCL,09H
MOVBL,OOH
OKL:
MOVAL,OOH
INCBL
OK1:
INCAL
PUSHAX
CMPBL,AL
JZOK
MOVBH,AL
MULBL
MOVDI,OFFSETATAD
CALLOKP
POPAX
JMPOKI
OK:
MOVBH,AL
MULBL
MOVDI,OFFSETATAD1
CALLOKP
POPAX
LOOPOKL
MOVAH,4CH
INT21H
OKPPROC
PUSHAX
PUSHBX
PUSHCX
ADDBX,3030H
MOV[DI],BH
MOVIDI+02HJ,BL
MOVCX,0AH
MOVDH,OOH
OKL2:
CMPAX,CX
JS0K2
ADDCX,OAH
INCDH
JMPOKL2
OK2:
SUBCX,OAH
SUBAX,CX
MOVAH,DH
ADDAX,3030H
MOV[DI+04H],AH
MOVIDI+O5HJ,AL
MOVDX,DI
MOVAH,09H
INT21H
POPCX
POPBX
POPAX
RET
OKPENDP
CODEENDS
ENDSTART
C:\¥INDO¥S\systeB32\od.exeBBX
0WarningErrors
0SeuereErrors
:\huiblan>1inka
licrosoft<R>8086ObjectLinkerUersion3.05
:opyright<C>MicrosoftCorp1983,1984,1985.Allrightsreserued.
UnFi1e
F[A.EXE]:
ist1?1
ibi[NUL.MAP]:
rare[.LIB]:
:\nuiblanza.exe
2*2=04
2*3=063*3=09
2*4=083*4=124*4=16
2*5=103*5=154*5=205*5=25
2*6=123*6=184*6=245*6=306*6=36
2*7=143*7=214*7=285*7=356*7=427*7=49
2*8=163*fi=244*8=325*8=406*8=487*8=568*8=64
2*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81
Exam4:
CODESSEGMENT
ASSUMECS:CODES
START:
XORBX,BX
MOVDL,2AH
MOVCX,9
LOP:PUSHCX
INCBL
MOVCL,BL
MOVDL,2AH
LOP2:MOVAH,02H
INT21H
LOOPLOP2
POPCX
MOVDL,OAH
MOVAH,02H
INT21H
MOVDL,ODH
MOVAH,02H
INT21H
CMPBL,9
JZENDPRO
LOOPLOP
ENDPRO:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
?C:\¥Iin)OTS\syste>32\c>d.exeHEIE3
0WarningErrors
0SeuereErrors
C:\huibian>linka
Microsoft<R>8086ObjectLinkerUersion3.05
Copyright<C>MicrosoftCorp1983,1984,1985.Allrightsreserved.
RunFile[A.EXE]:
ListFile[NUL.MAP]:
Libraries[.LIB]:
Warning:nostacksegment
C:\huibian>a.exe
M
M-M
M-M-M
xxxxx
jexxxxxx
C:\huibian>
Exam5:
STACKSEGMENTSTACK
DB1024DUP(0)
STACKENDS
DATASEGMENT
BUFDWOFIOIHJIODH,52H,1OOH,456H
COUNT=($-BUF)/2
RESULTDW4DUP(?):$'
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
WDADDPROC
PUSHDI
MOVAX,0
MOVDX,0
MOVDI,OFFSETBUF
NEXT2:ADDAX,[Di]
JNCNEXT1
INCDX
NEXT1:ADDDI,2
LOOPNEXT2
POPDI
RET
WDADDENDP
SHOWPROC
PUSHCX
PUSHDI
MOVex,04H
MOVDI,OFFSETRESULT
MOVBX,AX
ADDDI,07H
BBB:MOVAX,BX
ANDAX,OOOFH
CMPAL,OAH
JBQQQ
ADDAL,07H
QQQ:ADDAL,30H
MOV[DI],AL
DECDI
PUSHCX
MOVCL,04
SHRBX,CL
POPCX
LOOPBBB
MOVex,0004H
ccc:MOVAX,DX
ANDAX,OOOFH
CMPAL,,0AH
JBDDD
ADDAL,07H
DDD:ADDAL,3OH
MOV[DI],AL
DECDI
PUSHex
MOVCL,04H
SHRDX,CL
POPex
LOOPCCC
POPDI
POPex
RET
SHOWENDP
BEGIN:MOVAX,DATA
MOVDS,AX
MOVex,COUNT
CALLWDADD
CALLSHOW
MOVDX,OFFSETRESULT
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
五C:\¥IMD01S\syste>32\cBd.exeBSB
C:\huibian>nasna
Microsoft<R>MacroAssemblerUersion5.00
Copyright<C>MicrosoftCorp1981-1985,1987.Allrightsreserved.
ObjectFilename[a.OBJ]:
Sourcelisting[NUL.LST]:
Cross-referenceINUL.CRF]:
50588?415684Bytessymbolspacefree
0WarningErrors
0SeuereErrors
C:\huibian>linka
Microsoft<R>8086ObjectLinkerUersion3.05
Copyright<C>MicrosoftCorp1983,1984,1985.Allrightsreserved.
RunFile[A.EXE]:
ListFileENUL.MAP]:
Libraries[.LIB]:
C:\huibian>a.exe
000107B6
C:\huibian>
實驗三算術運算與代碼轉換程序設計
一、實驗目的
1)掌握算術運算程序的設計方法。
2)掌握代碼轉換程序的設計方法。
3)進一步掌握各種程序結構。
4)純熟掌握和使用用DEBUG調試程序。
二'實瞼內容
1)編制兩個多字節整數加法和減法程序,并將結果按十六進制形式顯示在
屏幕上。
2)編制程序實現二進制定點數與十進制數的ASCII碼串之間轉換,并將結果
顯示在屏幕上。
3)編寫程序計算從鍵盤輸入兩個不超過四位的十進制數的和、差、積、商,
并以十進制形式輸出。
4)寫程序把從鍵盤輸入的四位十六進制數轉換為壓縮的BCD碼,并顯示輸出。
5)編寫一通用過程用來將十進制數(從鍵盤輸入)轉換為P(從鍵盤輸入)進
制數。
三'實驗設備
PC機一臺
四'實驗環節
1)按程序流程圖編制實驗程序。
2)輸入源程序。
3)匯編、連接程序,執行程序,檢查結果。
4)程序的執行可用DEBUG的G命令,也可用T命令單步跟蹤執行。
5)用D命令檢查執行結果。
五、實驗報告的規定
1)列出源程序。
2)對程序中用到的寄存器說明其功能。
3)總結算術運算和代碼轉換程序的設計方法。
4)說明如何使用DEBUG進行程序調試的。調試過程中所碰到的問題是如
何解決的。
Eaxml:
DATASEGMENT
oADB82H,34H,56H,78H,2AH,OBCH,0EFH,00H
BDB34H,56H,78H,9AH,0BCH.0EFHJ6H
LENBEQU$-B
LEN2EQU(B-A)*2
RESDBLEN2DUP(?),
DATAENDS
STACKSEGMENTPARASTACK
DW20DUP(?)
STACKENDS
CODESEGMENT
ASSUMEDS:DATA,CS:CODE,SS:STACK
START:OMOVAX,DATA
oMOVDS,AX;多字節相加
oMOVSI,0
CLC
oMOVCX,LENB
LOP1:MOVAL,AISI]
oADCAL,B[SI1
oMOVA[SI],AL
oINCSI
LOOPLOP1
ADCBYTEPTRA[SI],0;輸出
oMOVSI,0
oADDSLLENB
MOVDL0
MOVCX,LENB+1
LOP2:PUSHCX
MOVAL,A[SI];高位轉換
oMOVBL,AL
oMOVCL,4
oSHRBL,CL
oCMPBL,0AH
oJBNEXT1
oADDBL,07H
NEXT1:ADDBL,30H
oMOVRES[DI],BL
INCDI;低位轉換
oMOVBL,AL
ANDBL,0FH
CMPBL,OAH
oJBNEXT2
ADDBL,07H
NEXT2:ADDBL,30H
MOVRES[DI],BL
INCDI
oDECSI
POPCX
LOOPLOP2
MOVAH,09H
oMOVDX,OFFSETRES
INT21II
oMOVAH,4CH
INT21II
CODEENDS
ENDSTART
c:\C:\WIND0¥S\systeB32\cBd.exeBSD
C:\huibian>nasna
Microsoft<R>MacroAssenblei*Uersion5.00
Copyright<C>MicrosoftCorp1981-1985,1987.Allrightsreserved.
Objectfilename[a.OBJ]:
Sourcelisting(NUL.LST]:
Cross-reference[NUL.CRF]:
50512+415760Bytessymbolspacefree
0WarningErrors
0SeuereErrors
C:\huibian>linka
Microsoft<R>8086ObjectLinkerUersion3.05
Copyright<C>MicrosoftCorp1983,1984,1985.Allrightsreserued.
RunFile[A.EXE]:
ListFile[NUL.MAP]:
Libraries[.LIB]:
C:\huibian>a.exe
0106ABE712CE8AB6
C:\huibian>—
Exam5:
DATASEGMENT
STRING1DBINPUTYOURM=7$'
STRING2DBINPUTYOURP=',,$*
REDB8DUP(3OH)
DATAENDS
STACK1SEGMENTSTACK
DW60HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACKI
START:MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETSTRING1
MOVAH,09H
INT21H
MOVAH,01H
INT21H
ANDAX,0000FH
MOVDL,10
MULDL
MOVBX,AX
MOVAH,0IH
INT21H
ANDAL,OFH
C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 標準化住宅小區業主物業服務合同樣本
- 長途載重貨車租借合同書
- 建設工程施工合同風險防范
- 預售樓盤標準合同文本示例
- 辦公用房租賃合同:商務合作新篇章
- 標準公寓租賃合同范本
- 租賃酒店場地合同樣本
- 工程項目承包合同公示
- 廣福花園A19棟5號商業合同簽約注意事項
- 鋼材供應合同樣本
- 2025年江蘇省南通市海安市十三校中考一模數學試題(原卷版+解析版)
- 浙江2025年桐鄉市事業單位招考高頻重點模擬試卷提升(共500題附帶答案詳解)
- 2025至2031年中國管道直飲水系統行業投資前景及策略咨詢研究報告
- 2024年可行性研究報告投資估算及財務分析全套計算表格(含附表-帶只更改標紅部分-操作簡單)
- 國家開放大學《初級經濟學》形考任務1-3參考答案
- 532近代前夜的危機
- 病原微生物實驗室生物安全備案專家意見表
- (精心整理)朱德熙_說 “的”
- 《雷鋒叔叔,你在哪里》說課稿(附優質教案)
- 廠用電受電后代保管協議
- 醫院住院病歷質量檢查評分表
評論
0/150
提交評論