我嘗試添加幾個像素在一起,以便做羅嗦濾波器NASM。我已經設法添加三個像素,其值爲00 + d3 + d8(0 + 211 + 216)。當我嘗試添加一個像素,值爲0時,程序無法打印變量blurr的值。NASM增值登記錯誤
更新:
似乎增加了可變總和產品可在完成三次,因爲如果我註釋掉另一個add
,該值將在我的輸出文件打印。
blurrTopRow:
;from 0 - 251 there will be no pixels above the active pixel
;set ah to 0 to be sure that no other values changes the byte
;save byte in al, ax should be [0000](ah) value(al)
mov ah, byte 0
mov al, byte [info + 0]
;store sum all pixels in sum, divition will be done here
add [sum], ax
;add pixel beside it (1)
;mov ah, byte 0
mov al, byte [info + 1]
;add the value to sum
;add [sum], ax If i add this value, the program stops working
;add the pixels below the first pixel
;move data to the first 8-bits
mov ah, 0
mov al, byte [info + 251]
add [sum], ax
;set the last 8-bits in the 16-bit register (ax) to 0
;to avoid messing up the value
mov ah, 0
mov al, byte [info + 252]
add [sum], ax
;devide the digit with 4
mov eax, 0
mov ax, [sum]
mov ebp, 4
mov edx, 0
idiv ebp
mov [blurr], al
ret
我相信這是由於一些字節錯誤或有效的尋址,我還不明白。如果你想看到我所有的代碼,你可以發現它在pastebin
就目前而言,我超困惑,爲什麼增加一個0在我總和打破了計劃,尤其是當我在已經做到了這一點上面的代碼。
最好
勒布
_「不正確執行並且中斷」_不是一個好問題描述。發生了什麼,調試器說什麼? – Jester
該程序打印出2個字節,存儲在[blurr]變量中。當我第四次使用ADD描述時,文件中不會保存任何值。 (我resentlly發現了這一點,會改變問題的描述) 我還沒有嘗試調試的是,我會考慮它很快,只需要採取一些空氣和撫慰我的無奈升技的xD –
決不能打印自從傳遞1作爲參數以來,有2個字節。無論如何,你是如何檢查沒有輸出,什麼是你的輸入文件?你用調試器發現了什麼? – Jester