1樓:自動化設計製造
任意寫即可!存放n個有符號或無符號,或只是其中一種情況!
n個無符號的相應程式:
org 0300h
ax data 20h
dx data 21h
buf data 22h
mov r2,#n
mov r0,#buf
mov ax,#ffh
loop1:mov a,@r0
cjne a,ax,next1 比較最小部分;
next1:jnc next2
mov ax,a
next2:inc r0
djnz r2,loop1
nopnop
mov r3,#n
mov r0,#buf
mov dx,#00h
loop2:mov a,@r0
cjne a,dx,zuida 取最大部分;
zuida:jc out
mov dx,a
out:inc r0
djnz r3,loop2
nopnop
sjmp $
end n個有符號數程式:
根據ov狀態來判斷帶符號數的大小:
若x-y為正數,則:在ov=0時x>y
在ov=1時xy
相應程式:org 0400h
ax data 30h
dx data 31h
buf data 32h
mov r2,#n-1
mov r0,#buf 此部分為取最小值;
mov ax,@r0
noploop1:inc r0
mov a,@r0
clr csubb a,ax
jz xiao
nopjnb ,zheng
jnb ov,xiao
sjmp loop2
zheng:jb ov,xiao
sjmp loop2
xiao:mov a,@r0
mov ax,a
loop2:djnz r2,loop1
nopnop
mov r3,#n-1
mov r0,#buf
mov dx,@r0
noploop3:inc r0
mov a,@r0
clr csubb a,dx
jz max
nop 此部分為取最大值;
jb ,fushu
jnb ov,max
sjmp chu
fushu:jb ov,max
sjmp chu
max:mov a,@r0
mov dx,a
chu:djnz r3,loop3
nopnop
sjmp $end
2樓:
可以是有符號的也可以是無符號的,分開來弄的吧,不是同時處理他們的混合~~
彙編計算問題,求高手指導下我這個小菜吧
3樓:網友
基本的定址問題。
如果mov ax, 1352h,這就是立即數定址,那麼ax = 1352h,這個很好理解了。
如果mov ax, [1352h],這是什麼定址我也說不上來了,總之結果是ax = ds:[1352h],即ax等於ds段裡,偏移位址為1352h的那塊記憶體裡的值。
因為ds = 1000h,所以ds:[1352h] = ds * 10h + 1352h = 11352h。就是段位址左移四位,加上偏移位址,就構成了20位的實體地址。
因為ax是個16位的暫存器,所以要讀取兩個位元組,從11352h位址開始,讀取兩個位元組到ax裡。intel的cpu是小端優先,所以讀取結果是,ax高8位等於11353h位址裡的值即26h,低8位等於11352h位址中的值即0ffh,所以ax = 26ffh。
如果是mov al, [1352h],因為al是個8位暫存器,所以只用讀乙個位元組即可,此時al = 0ffh。
4樓:匿名使用者
ax是雙位元組指令!它要連續取兩個位元組的資料,低位址取來放到低位元組,高位址取來放到高位元組!這個語句就相當於。
mov al [1352h]
mov ah [1353h]
組合語言問題,菜鳥請求高手,組合語言問題,輸出了正確結果,但是下面還輸出了許多亂碼??
湯旺河邊 dos功能呼叫9號功能 顯示以ds dx開始的字串,當遇到乙個 時,結束顯示。樓主程式中,lea si,aa add si,5 mov byte ptr si 把字串中第4個字元改為 致使顯示前3個字元之後,結束顯示,這是導致 只是輸出前3個 的癥結所在。把這三條指令的後兩條刪掉即可。下面...
彙編高手幫幫忙,彙編高手幫幫忙
如果是學組合語言專門的就是 ibm pc組合語言程式設計 清華 沈美明的那本 至於16為還是32位這個好象都是要學的,不過現在一般都是16位的吧。至於那個tasm5.0,我只聽說過masm5.0 不好意思,不過現在彙編應該用的比較多的是masm5.0下面有使用方法 1.開始 執行 輸入 cmd 沒有...
高分彙編程式設計,高手來幫幫忙
有彙編和c轉化的軟體 for i 0 i 9 i for j i 1 j 10 j if a i a j 這個c是對的不過你還少了點東西.下面的彙編我倒是看的很對但是有點還是沒有看明白.你的意思是每次si和di都因該加2是在儲存資料時佔用的2個位元組. data segment assume ds ...