組合語言的LOOP迴圈以及除法

2021-08-31 13:32:24 字數 1101 閱讀 8236

學習組合語言真的是一很大的坑,因為很多東西都是和cpu有關,這語言很底層,除了機器語言就到組合語言了。所以還是很難學的。下面我們討論一下它的除法以及loop迴圈。

datas segment

grade dw 10,20,30,40,50,60,70,80,90,100;這是乙個字型別的陣列

datas ends

stacks segment

;堆疊段

stacks ends

codes segment ;**段

assume cs:codes,ds:datas,ss:stacks

start:

mov ax,datas

mov ds,ax

mov cx,10 ;設定迴圈次數cx

mov ax,0

mov si,ax

again:

add ax,grade[si]

add si,2

loop again

mov bl,10

div bl

mov ah,0

mov bl,10

div bl

add al,30h ;以ascall碼輸出十進位制的數

add ah,30h

mov dh,ah

mov dl,al ;顯示商

mov ah,2

int 21h

mov dl,dh ;顯示餘數

mov ah,2

int 21h

mov ah,4ch

int 21h

codes ends

end start

在**中,cx代表迴圈次數,沒迴圈一次就減一,直到為零就終止迴圈。**中設定了迴圈次數 mov cx ,10

** mov bl,10 div bl 是一點要給bl賦值做除法,直接傳是會出錯的比如:div 10

還有就是做除法的時候,首先求出這個數字,然後在分步輸出;在此程式中就是先把除後的商儲存在al,ah置0;然後在對商al進行分步輸出。輸出的時候是按ascall碼輸出的,所以要轉化為ascall形式。要不然輸出別的東西。

還有就是彙編的坑很多,要記得東西也很多。

組合語言 int指令代替 loop指令

問題 使用7ch中斷例程完成loop指令的功能 loop 指令的功能 1 判斷cx值是否為0 2 不是則跳轉到標號s處 應用舉例 在螢幕中間顯示80個 assume codesg codesg segment start mov ax,0b800h mov es,ax mov di,160 12 m...

組合語言 筆記 BX 和loop指令

符號mov ax,bx inc bx 功能 bx中的內容加1 loop指令的格式為 loop 標號 cpu執行loop指令時,進行兩步操作 程式設計計算2 12 assume cs code code segment mov ax,2 mov cx,11 s add ax,ax loop s mov...

組合語言 LOOP和 BX 的聯合應用

計算ffff 0 ffff b單元中資料的和,結果存在dx中 答案是0405 end loop和bx的聯合應用 assume cs code code segment mov ax,0ffffh mov ds,ax 資料段 mov dx,0 累加器清零 mov bx,0h 偏移位址從0開始 mov ...