1樓:匿名使用者
我除錯了能用,你自己拿去除錯了看下
幫你加了輸出語句
data1 segment
x dw 2
y dw 4
result dw ?
data1 ends
stack1 segment para stackdw 20 dup(0)
stack1 ends
code segment
assume cs:code,ds:data1,ss:stack1begin: mov ax,data1
mov ds,ax
mov bx,x
add bx,y
mov cl,3
sal bx,cl
sub bx,x
mov cl,2
sar bx,cl
mov result,bx
mov ax,bx
mov bx,100
cwddiv bx
push dx
add al,30h
mov dl,al
mov ah,02h
int 21h
pop ax
mov bl,10
div bl
mov bl,ah
add al,30h
mov ah,02h
mov dl,al
int 21h
add bl,30h
mov dl,bl
mov ah,02h
int 21h
mov ah,4ch
int 21h
code ends
end begin
2樓:
data1 segment
mes db'z=((2+4)*8-2)/4= $'
x dw 2
y dw 4
result dw ?
data1 ends
stack1 segment para stackdw 20 dup(0)
stack1 ends
code segment
assume cs:code,ds:data1,ss:stack1begin: mov ax,data1
mov ds,ax
mov bx,x
add bx,y
mov cl,3
sal bx,cl
sub bx,x
mov cl,2
sar bx,cl
mov result,bx
lea dx,mes
mov ah,9
int 21h
mov ax,result ;添上
call show ;添上
mov ah,0
int 16h ;等待
mov ah,4ch
int 21h
;添上show: ; 顯示ax中的值
push bx
push cx
push dx
xor cx,cx
mov bx,10
t5:xor dx,dx
div bx
or dx,30h
push dx
inc cx
cmp ax,0
jnz t5
t6:pop ax
mov ah,0eh
int 10h
loop t6
pop dx
pop cx
pop bx
retcode ends
end begin
3樓:匿名使用者
mov bx,word ptr ds:[result]mov al,bh
call dsal
mov al,bl
call dsal
dsal:
call altasc
push ax
mov dl,al
mov ah,02h
int 21h
pop ax
mov dl,ah
mov ah,02h
int 21h
retaltasc:
push cx
mov ah,al
and al,0fh
add al,90h
daaadc al,40h
daaxchg al,ah
mov cl,04h
shr al,cl
and al,0fh
add al,90h
daaadc al,40h
daapop cxret
4樓:海獅
需要加上的指令比你目前的程式還要長。
基本上把數轉換成bcd碼,然後呼叫21h相關中斷輸出
彙編程式的問題,一個彙編程式的問題
show str mov ax,0b800h mov es,ax 取得顯示緩衝區的首地址 這裡的10h要改成160,在視訊記憶體裡每一行字元佔用160個位元組 mov al,160 dec dh mul dh mov dh,0 dec dl 這裡還要加一條這個,用來把dl中的數翻倍,也就是乘2 因為...
彙編程式的問題
mov r0,22h mov a,21h loop mov r4,a clr c c要清零 subb a,r0 jnc rel1 mov a,r0 ljmp rel2 rel1 mov a,r4 這邊你忘記剛才的a已經被減掉了,所以得重新賦值 rel2 inc r0 cjne r0,51h,loop...
無符號數和有符號數在彙編程式裡如何區分
在彙編程式裡是沒有無符號數和有符號數區分的。加減運算指令是不區分有符號和無符號的,在計算機對有符號整數的表示只採取一種編碼方式,不存在正數用原碼,負數用補碼的問題。在組合語言裡宣告變數的時候,沒有signed和unsignde之分,彙編器全部將輸入的整數字面量當作有符號數處理成補碼存入到計算機中,只...