汇编程序 查表求平方的实现

【任务】设在内存单元SQTAB首址开始存放了0~15的平方数表。要求用直接查表法编一程序,求出A单元中给定数(<=15)的平方值送B单元保存。

【参考解答1】

assume cs: code, ds: data

data segment
  sqtab db 0, 1, 4, 9, 16, 25, 36, 49, 64, 81
     db 100, 121, 144, 169, 196, 225
  a db 12
  b db ?
data ends

code segment
start:
  mov ax, data
  mov ds, ax

  mov bl, a      ;以a中值作为索引值
  mov bh, 0
  mov al, sqtab[bx]  ;在table中查找
  mov b, al

  mov ax, 4c00h
  int 21h

code ends
  end start

【参考解答2】(用专门的查表指令xlat)

assume cs: code, ds: data

data segment
  sqtab db 0, 1, 4, 9, 16, 25, 36, 49, 64, 81
     db 100, 121, 144, 169, 196, 225
  a db 12
  b db ?
data ends

code segment
start:
  mov ax, data
  mov ds, ax
  mov bx, offset sqtab

  mov al, a
  xlat
  mov b, al

  mov ax, 4c00h
  int 21h

code ends
  end start

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言内嵌汇编API内存搜索引擎实例

    本文实例讲述了C语言内嵌汇编API内存搜索引擎的方法,分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: // apisearchEngine.cpp : Defines the entry point for the console application.  //    #include "stdafx.h"  #include <Windows.h>     DWORD __stdcall GetStrLengthA(char* szName)  {   

  • 汇编优化提示

    你需记住的最重要的事情就是代码花费的时间!不同的方法可以加速你的代码或者不能,所以你要多多尝试.因而计算代码花费的时间来看看你尝试的每个方法是否可以提速是件很重要的事情. :=========================初级========================= <1>释放所有8-CPU寄存器,以使它们用于你自己的代码中 复制代码 代码如下: push ebx push esi push edi push ebp :必须在改变ESP之前完成 :装载ESI.EDI和其他传递栈中值

  • 汇编语言无效指令错误概述

    问题:cmpxchg8b 指令比较一个8字节值edx和EAX带有8字节值内存( 目的地操作数). 只有有效目标操作数用于此指令是内存 操作数. 如果目标操作数是一个寄存器处理器应产生一个 无效OpCode例外,执行的指令cmpxchg8b应当停止和 处理器应该执行无效OpCode异常处理程序. 此错误发生是 锁定前缀为使用cmpxchg8b指令与一个(无效)寄存器目的地 操作数. 在这种情况下,处理器可能无法启动执行无效OpCode 异常处理程序,因为总线已锁定. 这将导致系统挂起. 提示:如果

  • 如何在TC2.0中调用汇编程序

    TC是美国BORLAND 公司在IBM PC机上开发的一个高效.优化的C编译程序,它自带高效的全屏幕编辑程序,在集成开发环境下可支持编辑.编译.连接调试和运行等过程连续完成. TC提供了与汇编语言的接口和在C程序中直接插入汇编指令代码的功能,支持以"远调用"和"近调用"方式来调用使用汇编语言编写的函数. TC调用汇编语言函数时,对汇编语言的编写要求十分严格,并且对大小写字母也有严格的区分.如果在编写供TC调用的汇编函数时不按照规定好了的格式书写,调用是不会成功的.

  • 解析四则表达式的编译过程及生成汇编代码

    1.前序这是编译原理的实验,自认为是上大学以来做过的最难的一个实验.实验用到的基础知识:C语言.数据结构.汇编(只需简单的了解).开发工具:VC 2.问题描述编译整数四则运算表达式,将整数四则运算表达式翻译为汇编语言代码.消除左递归后的文法:E→TE'E'→+TE' |εT→FT'T'→*FT' |εF→(E) | i消除左递归后的翻译模式:E ::=     T    {E'.i:=T.nptr}E'    {E.nptr:=E'.s}E'::=      + T  {E'1.i:=mknod

  • 汇编语言超浓缩教程

    所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样).某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了.为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ--).但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP.WINRAR-依次压迫,嘿嘿!

  • 汇编语言rep movsd 的使用详解

    mov esi,offset @s1mov edi,offset @s2 mov ecx,10cld rep movsd 1.rep movsd 每次ecx!=0便执行movsd ,然后ecx=ecx-1 movsd移动ds:[si] 到es:[di],在32位汇编下可以用esi代替si,edi代替di 2.同时由于在一般exe中ds = es 程序起始位置所以另esi = offset @s1就可以找到变量s1 ,edi= offset @s2就可以找到变量s2 3.movsd此类指令有个性质

  • 汇编语言常见错误信息中文注解

    本文的目标是收集大部分汇编中常见错误信息及对其的中文注解,方便大家在写汇编程序时能够快速地定位错误并解决问题. ml.exe错误信息: 复制代码 代码如下: FATAL   严重错误 cannot open file不能打开文件 I/O error closing fileI/O错误 正在关闭文件 I/O error writing fileI/O错误 正在写文件 I/O error reading file            I/O错误 正在读取文件 out of memory      

  • 汇编程序 查表求平方的实现

    [任务]设在内存单元SQTAB首址开始存放了0-15的平方数表.要求用直接查表法编一程序,求出A单元中给定数(<=15)的平方值送B单元保存. [参考解答1] assume cs: code, ds: data data segment sqtab db 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 db 100, 121, 144, 169, 196, 225 a db 12 b db ? data ends code segment start: mov ax, da

  • 分享下程序员/设计师能用上的 75 份速查表

    75 份速查表,由 vikas 收集整理,包括:jQuery.HTML.HTML5.CSS.CSS3.JavaScript.Photoshop .git.Linux.Java.Perl.PHP.Python.Ruby.Ruby on Rails.Scala.C#.SQLite.C++.C语言.Ubuntu.WordPress.Node.js.Oracle.NMAP.Mac OS X.Haskell.Unicode.PostgreSQL.Lisp.Matlab 等. 速查表可能是图片,也可能是 P

  • Git 常用命令速查表(图文+表格)

    一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看远程所有分支 git commit -am "init" 提交并且加注释 git remote add origin git@192.168.1.119:ndshow git push origin master 将文件给推到服务器上 git remote show origin

  • HTML,CSS,JavaScript速查表推荐

    事实上, 速查表 就是来帮助我们把日常中最常用到的信息聚集起来,方便使用,使我们做工作时更有效率.有了它们,免去了你的大脑花额外时间去记忆它们的烦恼--你只需要打开简表,马上能查到你想要的信息. 这篇文章里,你可以看到 最实用的HTML,CSS,JavaScript速查表 ,它们可以当作参考资料,备忘录,能帮助你以最快的速度找到想要的信息. 看看这些简表是不是你想要的,请在文章下面留下你的建议,谢谢! HTML HTML帮助手册 HTML速查手册 HTML特殊字符速查表 Dreamweaver

  • Java 关键字 速查表介绍

    访问控制: private 私有的 protected 受保护的 public 公共的 类.方法和变量修饰符 abstract 声明抽象 class 类 extends 扩允,继承 final 终极,不可改变的 implements实现 interface 接口 native 本地 new 新,创建 static 静态 strictfp 严格,精准 synchronized 线程,同步 transient 短暂 volatile 易失 程序控制语句 break 跳出循环 continue 继续

  • Javascript 高性能之递归,迭代,查表法详解及实例

    Javascript 高性能之递归,迭代,查表法详解 递归 概念:函数通过直接调用自身,或者两个函数之间的互相调用,来达到一定的目的,比如排序,阶乘等 简单的递归 阶乘 function factorial(n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); } } 递归实现排序 /* 排序且合并数组 */ function myMerge(left, right) { // 保存最后结果的数组 var res =

  • 15张Vim速查表-帮你提高N倍效率

    去年上半年开始全面使用linux进行开发和娱乐了,现在已经回不去windows了. 话归正传,在Linux上一直使用vim,慢慢熟悉了它的命令,才终于领悟了什么是编辑器之神. 最近抽空整理了这份速查表,收获颇丰,并分享给大家. 进入vim vim配置 移动光标 屏幕滚动 插入文本类 删除命令 复制粘贴 撤销 搜索及替换 书签 visual模式 行方式命令 若不指定n1,n2,则表示将整个文件内容作为command的输入 | 宏 窗口操作 文件及其他 推荐: 感兴趣的朋友可以关注小编的微信公众号[

  • 嵌入式C语言查表法在项目中的应用

    嵌入式C实战项目开发技巧:对一个有规律的数组表进行位移操作的方法 就像下面的这个表 之前写过上面这个标题的一篇文章,讲的是以位移的方式去遍历表中的数据,效率非常高,但是,如果要实现一个乱序的流水灯或者跑马灯的话,思考一个这样的算法是不可取的,很费时间,也很费脑力,于是,今天就说一说查表法,如果在程序中运用查表法,不论多么复杂的程序,只要符合一张表,那都可以实现,非常简单,体力活而已,接下来看看下面这个程序,对上面这个进行操作吧. #include <stdio.h> #include <

  • PHP语法速查表

    Abs: 取得绝对值.  Acos: 取得反余弦值.  ada_afetch: 取得资料库的传回列.  ada_autocommit: 开关自动更动功能.  ada_close: 关闭 Adabas D 连结.  ada_commit: 更动 Adabas D 资料库.  ada_connect: 连结至 Adabas D 资料库.  ada_exec: 执行 SQL 指令.  ada_fetchrow: 取得传回一列.  ada_fieldname: 取得栏位名称.  ada_fieldtyp

  • HTML标签及ASP函数速查表

    HTML文件标记  <html>  <head>  <!-->  <title>  <body> 文字排版标记  <br/>  <nobr>  <p>  <pre>            原始文字样式  <center>  <blockquote>     向内缩排  <h>              标题  <strong>,<b>   

随机推荐