计算机汇编语言运用哪个进制,运用汇编语言怎样以2进制、8进制、10进制、16进制方式输出10进制的数的计算结果。...
滿意答案
assume cs:code
data segment
db 10 dup (0)
data ends
stack segment
dw 8 dup (0)
stack ends
code segment
start:mov ax,12666
mov bx,data
mov ds,bx
mov si,0
mov bx,stack
mov ss,bx
mov sp,16
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc:push ax
push cx
push dx
push si
xor si,si
s0:mov cx,10 ;除數賦給cx
mov dx,0
;以下操作取字符
call divdw ;調用不產生溢出的除法運算
add cx,30h
push cx ;cx中保存的是子程序調用后得到的余數,入棧
inc si ;使用si記錄有多少位數
mov cx,ax ;將商賦給cx,判斷各位的數值是否全部求出
jcxz ok0
jmp short s0
ok0:mov cx,si
xor si,si ;以下將得到各位數值保存到內存單元中
s1: pop ax
mov [si],al
inc si
loop s1
mov byte ptr [si],0
pop si
pop dx
pop cx
pop ax
ret ;返回
divdw:push bx ;用bx暫存,先將其入棧,程序結束時還原原值
push ax ;將被除數的低16位入棧,下一步計算時用
;以下進行被除數高16位與除數的除法運算
mov ax,dx ;將被除數的高16位賦給ax
xor dx,dx ;被除數的高16位清零
div cx
mov bx,ax ;將高位的商暫存在bx中
;以下進行被除數低16位與除數的除法運算
pop ax ;將被除數低16位放入ax中,上步計算的余數作為本次運算的高16位,已默認在dx中
div cx ;商在ax中,余數在dx中
;按程序要求將結果保存
mov cx,dx ;cx中保存結果的余數
mov dx,bx ;dx中保存結果的高16位,ax中保存著結果的低16位
pop bx ; 還原bx中的值
ret
show_str:push ax
push bx
push cx
push dx
push es
mov ax,0b800h
mov es,ax
dec dh
mov ax,160
mul dh
mov bx,ax
mov ax,2
mul dl
sub ax,2
add bx,ax
mov di,0
mov al,cl
s2: mov cl,[si]
mov ch,0
jcxz ok
mov es:[bx+di],cl
mov es:[bx+di+1],al
inc si
add di,2
jmp short s2
ok: pop es
pop dx
pop cx
pop bx
pop ax
ret
code ends
end start
00分享舉報
總結
以上是生活随笔為你收集整理的计算机汇编语言运用哪个进制,运用汇编语言怎样以2进制、8进制、10进制、16进制方式输出10进制的数的计算结果。...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三角形 画_CAD入门基础第3节:直角三
- 下一篇: 第五章 编写主引导扇区代码