用十六位乘法指令完成三十二位無符號數乘法_第1頁
用十六位乘法指令完成三十二位無符號數乘法_第2頁
用十六位乘法指令完成三十二位無符號數乘法_第3頁
用十六位乘法指令完成三十二位無符號數乘法_第4頁
用十六位乘法指令完成三十二位無符號數乘法_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、用十六位乘法指令完成三十二位無符號數乘法一、要求:以十六進制格式輸入乘數和被乘數,以十六進制格式顯示結果,兩個數相乘(十六進制數輸入,十六進制數輸出)二、設計原理實現兩個32位無符號數的相乘,被乘數在DX和AX寄存器中,乘數在CX和BX寄存器中,最后的64位乘積在DX,CX,BX,AX中。三、設計流程圖四、程序代碼ddata segment    w1 dw 4 dup(0)    定義4字存放兩個32位乘法因子,地址低位存放數據高位    w2 dw 4 dup(0)

2、60;  定義4字存放運算結果,乘法結果高位存放在RES低位    D5 db ' (H)','$'    D1 db 'Please Input the number1 : ','$'    D2 db 'Please Input the number2 : ','$'    D3 db 'Get th

3、e result : number1 * number2 = ','$'    D4 db 0dh,0ah,'$'ddata endssstack segment para stack 'stack'   定義堆棧段     sta dw 100 dup(?) ;定義一個100個word的數組     top label wordsstack ends

4、ccode segment   定義代碼段     assume cs:ccode,ds:ddata ;定義代碼段和數據段main   proc far    主程序開始start: mov ax,sstack     mov ss,ax     mov sp,offset top     push

5、 ds     mov ax,0 ;將ax清零     push ax     mov ax,ddata    將DDATA的段地址送入ds     mov ds,ax       初始化結束    call en   

6、 mov dx,offset D1  mov ah,9  int 21h    mov bx,offset w1call read   存放輸入數據     call h   顯示H     call en   回車,換行     mov dx,offset D2

7、60;顯示提示信息     mov ah,9 在屏幕上輸出字符串D2   int 21h 中斷調用   add bx,4     call read   存放輸入數據     call h     call en     call en&#

8、160;    mov dx,offset D3 顯示提示信息    mov ah,9   int 21h    實現32位乘法    call multmov bx,offset w2    call dispall   調用子程序輸出結果    mov ah,10h 

9、0;  int 16h    int 10h    call h    call en    call en    retmain   endp ;相乘mult   proc    push ax    push bx  

10、;  push cx    push dx    push di    mov ax,offset w2    mov di,ax   DI指向RES偏移地址   mov bx,offset w1 BX指向乘法因子首地址    mov ax,bx+6   D1第48位以后,被乘數

11、的低16位    mov cx,bx+2   D1第16位以后,乘數的低16位    mul cx    32位乘法,結果存在DX,AX中    add di+6,ax   低16位乘法結果儲存在RES高32位    add di+4,dx    mov ax,bx+4  

12、60;D1第32位以后,被乘數的高16位與乘數低16位相乘    mul cx    CX不變,存放乘數低16位    add di+4,ax   移位加法    adc di+2,dx   帶進位加法    mov cx,bx   乘數的高16位    mov ax,

13、bx+6   被乘數低16位    mul cx    16位乘法    add di+4,ax   移位加法    adc di+2,dx   帶進位加法    adc word ptrdi,0    mov ax,bx+4   被乘數高

14、16位    mul cx    CX內容為乘數高16位,高16位乘法    add di+2,ax   移位加法    adc di,dx   帶進位加法    pop di    pop dx    pop cx   

15、0;pop bx    pop ax    retmult    endp ;回車,換行en    proc    push ax    push dx    mov dx,offset D4    mov ah,9    int 21h&

16、#160;   pop dx    pop ax    reten    endph    proc    push ax    push dx    mov dx,offset D5    mov ah,9   

17、60;int 21h    pop dx    pop axreth     endp ;顯示入口bxdispall proc    push cx    push bx    mov cx,4l1:    push cx    mov cl,8    mov ax,bx  &#

18、160; add bx,2    call print    pop cx    loop l1    pop bx    pop cx    retdispall endp ;入口 bc 存放讀入數據read    proc    push cx    push ax    push dx

19、0;   mov dx,0     mov ch,8next1: cmp ch,4    jnz n2       push ax    push dx    mov dl,' '    mov ah,2    int 21h    pop dx   

20、pop axn2: mov ah,7    int 21h    cmp al,13    je over    push dx    mov dl,al    call check ;調用CHECK,將輸入字符轉換為數據存儲    mov cl,al    cmp cl,0    jnz next2  &#

21、160; pop dx    jmp next1  next2: mov ah,2    int 21h    mov al,cl    pop dx    cmp ch,4    jnz full    mov bx,dx    mov dx,0full: mov cl,4    rol dx,cl

22、0;   add dl,al    dec ch    jnz next1over: mov bx+2,dx ;結束    pop dx    pop ax    pop cx     retread    endpcheck    proc   ;檢查輸入數據是數字還是字母,轉換為ASC碼存儲 &

23、#160;  cmp al,30h   ;比較得出是數字還是字母    jl er    cmp al,3ah    jnl b1    sub al,30h   ;將數字轉換成ASC碼    jmp okb1:    cmp al,41h    jl er    cmp al,47h  

24、  jnl b2    sub al,37h   ;將字母轉換成ASC碼    jmp okb2:    cmp al,61    jl er    cmp al,67h    jnl er    sub al,57h    jmp oker:    mov al,0hok:  

25、  retcheck    endp ;入口axprint proc        push cx        push bx        mov bx,ax        mov ch,4next: mov cl,4     

26、;   rol bx,cl   ;移位相與,屏蔽低位,得到要輸出的ASC碼        mov al,bl        and al,0fh        add al,30h          cmp al,3Ah          jl disp        add al,7disp: mov ah,2        mov dl,al     

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論