【彙編程式】兩個長整數相乘
STACKS SEGMENT STACK DW 100 DUP(?) TOP LABEL WORD STACKS ENDS DATAS SEGMENT NUM1 DW 9,9,8,7,4,5,6,7,8,9 NUM2 DW 6,4,5,6,7,8,9 ;定義兩個數字,首位存放num的長度,這兩個數字將用於做乘法運算 S DW 300H DUP(0) ;s用於存放結果 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS MAIN PROC FAR MOV AX,STACKS MOV SS,AX LEA SP,TOP MOV AX,DATAS MOV DS,AX LEA SI,NUM1 LEA DI,NUM2 LEA BX,S ADD SI,2 ADD DI,2 ;加2的原因是因為第一位是數字的個數,從第二個數字開始才是真正的數,因為是DW的所以需要+2 MOV CX,NUM1 JIN1: PUSH [SI] ADD SI,2 LOOP JIN1 LEA SI,NUM1 ADD SI,2 MOV CX,NUM1 CHU1: POP [SI] ADD SI,2 LOOP CHU1 ;進棧出棧的目的是為了倒置該字串用於乘法運算 MOV CX,NUM2 JIN2: PUSH [DI] ADD DI,2 LOOP JIN2 LEA DI,NUM2 ADD DI,2 MOV CX,NUM2 CHU2: POP [DI] ADD DI,2 LOOP CHU2 ;同上 LEA SI,NUM1 LEA DI,NUM2 LEA BX,S ADD SI,2 ADD DI,2 MOV CX,NUM1 ;二重迴圈,把每個數都相乘,並存在s的對應位置,如果該位置裡有值,則加上該值 L1: PUSH CX MOV CX,NUM2 PUSH BX PUSH DI L2: MOV DX,[SI] MOV AX,[DI] MUL DX ADD DI,2 ADD AX,[BX] MOV [BX],AX ADD BX,2 LOOP L2 POP DI POP BX ADD BX,2 POP CX ADD SI,2 LOOP L1 XOR DX,DX LEA BX,S MOV CX,NUM1 ADD CX,NUM2 ;將s中每一個數除以10,餘數放回原位,商作為進位
L4: MOV AX,[BX]
ADD AX,DX MOV DL,10 DIV DL MOV DL,AH MOV [BX],DX MOV DL,AL ADD BX,2 LOOP L4 MOV CX,NUM1 ADD CX,NUM2 L5: SUB BX,2 ;逆序,輸出結果 MOV DX,[BX] ADD DX,30H MOV AH,2 INT 21H LOOP L5 L10: MOV AH,4CH INT 21H MAIN ENDP CODES ENDS END MAIN
相關推薦
【彙編程式】兩個長整數相乘
STACKS SEGMENT STACK DW 100 DUP(?) TOP LABEL WORD STACKS ENDS DATAS SEGMENT NUM1 DW 9,9,8,7,4,5,6,7,8,9 NUM2 D
關於兩個長整數相乘的實現
題目:實現兩個長整數相乘的演算法。 此程式碼可實現任意長度的兩個數相乘,實現方法採用單向連結串列。 以下是我的程式碼. 備註:此程式碼有參考網上的程式碼。 #include "stdafx.h" #
單鏈表實現兩個長整數相乘
#include<iostream.h> #include<stdlib.h> #include<string.h> #define MAX 100 #define toInt(a) (*(a)-'0') typedef struc
【typescript】兩個物品圍繞旋轉效果
記錄一下旋轉的原理,使用計時器來移動座標,或者改為按幀移動也可。 程式碼裡的物件或其他介面,能看得懂就行,就不貼上來了。 效果: private _circleCenter = {x: 279, y: 229};//中心,訂半徑 private _aPos
【JS】兩個陣列的交集 II #排序 #雜湊 #雙指標 #二分查詢
給定兩個陣列,編寫一個函式來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2,2] 示例 2: 輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出: [4,9] 說明: 輸出結
【JS】 兩個陣列的交集 #排序 #雜湊 #雙指標 #二分查詢
給定兩個陣列,編寫一個函式來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2] 示例 2: 輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出: [9,4] 說明: 輸出結果中
java程式計算兩個大整數相乘
方法1 :用兩個字串儲存輸入的大整數,然後用第二個字串的每一位去乘第一個字串的數字值,最後將每次的結果錯位相加即可。時間複雜度高O(n^2) 方法2:將兩個大整數X,Y每次分割成兩半,第一個分割成AB,第二個分割成CD。所以最後結果XY=(A*10^n/2 +B)(C*10^m/2+D);進
【ES6】兩個例子明白箭頭函式this指向問題
前言:es6箭頭函式沒出現之前,this的指向不是函式被建立時繫結,而是被怎麼樣的方式呼叫時繫結的。而箭頭函式剛好相反,箭頭函式的this指向是函式被建立時繫結的,它的指向就是當前詞法作用域中的this
【SQL】兩個帶order by查詢進行union all報ORA-00933錯誤的解決方法
在oracle SQL中,要求order by是select語句的最後一個語句,而且一個select語句中只允許出現一個order by語句,而且order by必須位於整個select語句的最後。 當時是要將一個十分複雜的檢索明細查詢和一個十分複雜的檢索彙總查詢的結果
【Leetcode】兩個有序陣列的中位數
解法一: 當合並後的總元素個數是奇數時,中位數的下標是n/2。當總元素個數是偶數時,中位數是下標n/2-1和下標n/2兩個元素的平均值。不論總個數奇偶,可以將n/2作為右中位數,n/2-1作為左中位數,只不過總個數是奇數時,沒用到左中位數。也就是說必須要找到第
【 MATLAB 】兩個序列的卷積和運算的MATLAB實現(1)
設矩形脈衝 是脈衝響應 的LTI系統的輸入,求輸出 y(n). 下面的指令碼中用到了一個自定義的函式,也就是兩個訊號相加的函式: function [y,n] = sigadd(x1,n1,
JS實現兩個大數(整數)相乘 例項程式碼
在javascript中,大數,即超出語言所能表示的數字最大範圍的數字,那麼如何實現兩個大數相乘呢? 程式碼:console.log(bigMut("567", "1234")); // 699678 function bigMut(big, common) { big
【堆疊】兩個棧模擬佇列
之前想的太複雜了,過分地考慮空間的利用率,使得邏輯非常複雜,簡直要爆炸,看了標準答案後,媽的如此簡單!! 答案思路:準備兩個棧A,B。A專門用於入隊,B專門用於出隊。 當要入隊時,如果A沒有滿,那麼很正常地把元素壓入A。如果A已經滿了,如果B是空的,我們就把A的元素全部壓
【程式6】 題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
在迴圈中,只要除數不等於0,用較大數除以較小的數,將小的一個數作為下一輪迴圈的大數,取得的餘數作為下一輪迴圈的較小的數,如此迴圈直到較小的數的值為0,返回較大的數,此數即為最大公約數,最小公倍數為兩數之積除以最大公約數。 import java.util.Scanner;
【程式6】 題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
/* 2017年3月2日15:10:11 java基礎50道經典練習題 例6 Author:ZJY(&&) Purpose:最大公約數和最小公倍數的應用 最大公約數:把每個數分別分解質因數,再把各數中的全部公有質 因數提取出來連乘,所得的積就
【程式16】 題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> /* 【程式16】 題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。 【分析】 最大公約數:輾除法 最小公倍數:兩數之積除以最大公約數 */ int main(int argc,
【C語言】兩個int(32位)整數m和n的二進位制表達中,有多少個位(bit)不同
根據異或我們可以知道,兩個數字的二進位制位按位異或,相同為0,相異為1。 因此我們可以通過將兩個數字按位異或,並計算該異或結果中二進位制位中1的個數,即可知道有多少個位元位不同。 int count(int a, int b) { int m = a ^ b; // 兩個數按位異或,對應不
【二叉樹上的路徑數】及【過樹上兩個節點最長路徑】
#include<bits/stdc++.h> using namespace std; const int maxn=1e3+20; vector<int>G[maxn]; int x,y,ans,n; int dfs(int v){ int
【JAVA習題六】輸入兩個正整數m和n,求其最大公約數
import java.util.Scanner; public class Oujilide歐幾里得 { public static void main(String[] args) { // TODO Auto-generated method stub Scan
【數據結構】兩個單循環鏈表的連接操作
單鏈表 ont rac 步驟 lis ext content mil 改變 假設在單鏈表或頭指針表示的鏈表上操作這個比較消耗性能,由於都須要遍歷第一個鏈表。找到an,然後將b1鏈接到an的後面。時間復雜度是:O(n)。若在尾指針表示的單循環鏈表上實現,則僅僅需改變指針,