汇编编程计算机流程图,汇编程序怎么做流程图?
正在畫流程圖,稍后附上
;x86匯編_用循環(huán)結(jié)構(gòu)編程計算階乘n!
code segment ;代碼段開始
assume cs:code,ds:code ;定義代碼段和數(shù)據(jù)段的段地址都是本段(代碼段)的段地址
org 100h;指定程序被載入內(nèi)存時的起始地址
start: ;程序開始的標號
push cs;將代碼段地址壓棧
pop ds;從棧中彈出到數(shù)據(jù)段寄存器,與上句話一起,將代碼段的值賦給數(shù)據(jù)段
push cs;再將代碼段地址壓棧
pop es;從棧中彈出數(shù)據(jù)到附加段寄存器
q0:lea dx,tips;q0標號,此處傳遞tips標號的偏移地址到dx
mov ah,9 ;ah=9
int 21h ;調(diào)用21h中斷,ah=9時,顯示字符串,字符串從ds:dx到一個$符號結(jié)束
q1:mov ah,0; ah = 0
int 16h;調(diào)用16h中斷,ah=0時,從鍵盤讀字符,al為字符碼
cmp al,1bh ;將1bh與字符碼比較,1bh是esc的字符碼
jz exit;如果相等,則跳轉(zhuǎn)到exit標號的位置
cmp al,'0';將al與0的字符碼相比
jb q1 ;如果al
cmp al,'8';將al與8的字符碼相比
ja q1 ;如果al>'8',跳轉(zhuǎn)到q1標號的位置
mov ah,0eh; ah=0eh
int 10h;調(diào)用10h中斷,ah=0eh時,顯示al表示的字符
sub al,30h;al = al-30h,目的是求出這個字符表示的數(shù)值,
or al,al ; al = al | al,與自己作按位或運算,目的是設置標志位
jnz q2 ; 如果結(jié)果不是0,也就是說al!=0,則跳轉(zhuǎn)到標號q2的位置
mov ax,1 ; ax = 1
jmp q4 ; 跳轉(zhuǎn)到q4的位置
q2:mov ah,0 ;q2標號,ah=0
mov cx,ax ; cx = ax
mov al,1 ; al = 1
xor dx,dx ; dx與自己異或,結(jié)果是dx=0,用異或來清0速度比較快!
q3:mul cx ;q3標號,無符號數(shù)相乘,(dx,ax)=cx*ax
loop q3 ;cx=cx-1,如果cx不為0,則繼續(xù)循環(huán)q3標號的操作,
q4:cld ;q4標號 ,方向標志置0
lea di,result ;目的變址寄存器di 設為result標號的偏移地址
add di,2 ; di=di+2
lea bp,table ;基址指針bp設為table標號的偏移地址
mov cx,5 ; cx = 5
q5:xor dx,dx ;q5標號,dx清0
div word ptr [bp] ;ax=(dx,ax)/[bp],求得指定位的值,比如十位百位什么的
or al,30h ;al=al|30h,目的是求這個數(shù)的字符,
stosb ; di=al
mov ax,dx ;ax=dx
add bp,2 ;bp=bp+2
loop q5 ;cx=cx-1,如果cx不為0,則繼續(xù)循環(huán)q5標號的操作,
lea dx,result ;dx 設為result標號的偏移地址
mov ah,9 ;ah=9
int 21h ;調(diào)用21h中斷,ah=9時,顯示字符串,字符串從ds:dx到一個$符號結(jié)束
jmp q0 ; 跳轉(zhuǎn)到q0標號的位置
exit: ;exit標號
mov ah,4ch ;ah=4ch
int 21h ;調(diào)用21h中斷,ah=4ch時,表示程序退出
;以下內(nèi)容是預先準備的數(shù)據(jù)
tips db 'please input a number(0-8),esc to quit: ',0dh,0ah,'$' ;
table dw 10000,1000,100,10,1
result db '!=00000',0dh,0ah,'$'
code ends ;代碼段結(jié)束
end start
總結(jié)
以上是生活随笔為你收集整理的汇编编程计算机流程图,汇编程序怎么做流程图?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络的定义分类性能指标,第1章 计
- 下一篇: 计算机模拟多孔碳,多孔碳材料分子设计的三