
汇编语言
汇编语言
Starzkg
你已经是一个成熟的程序猿了,要学会自己DEBUG了。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《计算机组成原理》课程设计报告——TEC-2实验系统——微程序设计
一、目的和要求深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。二、实验环境1. TEC-2机一台2. 电脑一台3. TEC-2模拟软件一套三、具体内容1、分析TEC-2机的功能部件组成,分析TEC-2机支持的指令格式等。1.TEC-2机的控制器部件的组成TEC2机控制器部件的关键内容包括:(1)由7片S6116随机读写存储器芯片...原创 2020-06-19 19:37:28 · 9074 阅读 · 3 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——自编解析与答案
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第一章——自编解析与答案《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第二章——自编解析与答案《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第三章——自编解析与答案《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第四章——自编解析与答案《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第五章——自编解析与答案《IBM-PC汇编语言程序设计》(第2版)【沈美明.转载 2020-06-06 11:38:35 · 10426 阅读 · 0 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第十一章——自编解析与答案
11.1 写出文件代号式磁盘存取操作的错误代码:(1) 非法文件代号 (2) 路径未发现 (3) 写保护磁盘答:错误代码为:(1) 06 (2) 03 (4) 1911.2 使用3CH功能建立一文件,而该文件已经存在,这时会发生什么情况?答:此操作将文件长度置为0,写新文件,原文件内容被清除。11.3 从缓冲区写信息到一个文件,如果没有关闭文件,可能会出现什么问题?答:文件结尾的部分信息就没有被写入磁盘,从而造成写入的文件不完整。11.4 下面的ASCIZ串有什么错误?PATH_NAME转载 2020-06-06 11:38:04 · 910 阅读 · 0 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第十章——自编解析与答案
10.1 写出指令,选择显示方式10H,并将背景设为绿色。答: MOV AH, 00HMOV AL, 10H ;选择显示方式10H(16色图形)INT 10HMOV AH, 10HMOV AL, 00HMOV BH, 10H ;背景设为绿色(02H也可以,是用DEBUG调试出来的)MOV BL, 0 ;选择0号调色板INT 10H设置背景色也可用:MOV AH, 0BH ;设置背景色和调色板MOV BH, 0 ;设置背景色功能MOV BL, 8 ;绿色背景INT 10H10.2转载 2020-06-06 11:36:11 · 1193 阅读 · 0 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第九章——自编解析与答案
9.1 INT 21H的键盘输入功能1和功能8有什么区别?答:键盘输入功能1:输入字符并回显(回送显示器显示) (检测Ctrl_Break);键盘输入功能8:输入字符但不回显(也检测Ctrl_Break)。9.2 编写一个程序,接受从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。加密表为:输入数字:0,1,2,3,4,5,6,7,8,9密码数字:7,5,9,1,3,6,8,0,2,4答:程序段如下:SCODE DB转载 2020-06-05 14:53:03 · 1131 阅读 · 0 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第八章——自编解析与答案
8.1 写出分配给下列中断类型号在中断向量表中的物理地址。(1) INT 12H (2) INT 8答:(1) 中断类型号12H在中断向量表中的物理地址为00048H、00049H、0004AH、0004BH;(2) 中断类型号8在中断向量表中的物理地址为00020H、00021H、00022H、00023H。8.2 用CALL指令来模拟实现INT 21H显示字符T的功能。答:MOV AH, 2MOV DL, ‘T’PUSH DSPUSHF ;因中断服务程序的返回指令是IRET,而不是R转载 2020-06-05 14:52:12 · 2764 阅读 · 0 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第七章——自编解析与答案
7.1 编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。答:宏定义如下:CLRB MACRO N, CFILMOV CX, NCLDMOV AL, ‘ ’ ;;取空格符的ASCII码LEA DI, CFILREP STOSBENDM7.2 某工厂计算周工资的方法是每小时的工资率RATE乘以工作时间HOUR,另外每工作满10小时加奖金3元,工资总数存放在WAG中。请将周工资的计算编写成一条宏指令WAGES,并展开宏调用:WAGES R1,转载 2020-06-05 14:51:20 · 2595 阅读 · 0 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第六章——自编解析与答案
6.1 下面的程序段有错吗?若有,请指出错误。CRAY PROCPUSH AXADD AX, BXRETENDP CRAY答:程序有错。改正如下:CRAY PROCADD AX, BXRETCRAY ENDP ;CRAY是过程名,应放在ENDP的前面6.2 已知堆栈寄存器SS的内容是0F0A0H,堆栈指示器SP的内容是00B0H,先执行两条把8057H和0F79BH分别入栈的PUSH指令,然后执行一条POP指令。试画出示意图说明堆栈及SP内容的变化过程。答:变化过程如右图所示:6转载 2020-06-05 14:48:16 · 3445 阅读 · 0 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第五章——自编解析与答案
5.1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗?JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗?JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGIN转载 2020-06-05 14:45:55 · 4683 阅读 · 0 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第四章——自编解析与答案
4.1 指出下列指令的错误:(1) MOV AH, BX ;寄存器类型不匹配(2) MOV [BX], [SI] ;不能都是存储器操作数(3) MOV AX, [SI][DI] ;[SI]和[DI]不能一起使用(4) MOV MYDAT [BX][SI], ES:AX ;AX寄存器不能使用段超越(5) MOV BYTE PTR [BX], 1000 ;1000超过了一个字节的范围(6) MOV BX, OFFSET MYDAT [SI] ;MYDAT [SI]已经是偏移地址,不能再使用OFFS转载 2020-06-05 14:44:03 · 5459 阅读 · 1 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第三章——自编解析与答案
3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1) 立即寻址(2) 直接寻址(3) 使用BX的寄存器寻址(4) 使用BX的简接寻址(5) 使用BX的寄存器相对寻址(6) 基址变址寻址(7) 相对基址变址寻址答:(1) 操作数在指令中,即立即数;(2) EA=D=7237H;(3) 无EA,操作数为(BX)=637DH;(4) EA=(BX)=637DH;(5) EA=(BX)+转载 2020-06-05 14:40:53 · 10735 阅读 · 3 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第二章——自编解析与答案
2.1 在80x86微机的输入/输出指令中,I/O端口号通常是由DX寄存器提供的,但有时也可以在指令中直接指定00~FFH的端口号。试问可直接由指令指定的I/O端口数。解析:P31-2.5 外部设备答:可直接由指令指定的I/O端口数为256个。2.2 有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。答:存储器里的存放情况如右上图所示。2.3 在IBM PC机的存储器中存放信息..转载 2020-06-05 14:04:48 · 3911 阅读 · 1 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第一章——自编解析与答案
1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767解析:P4-1.1.3 十六进制数及其与二进制、十进制数之间的转换答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1....转载 2020-06-05 13:44:54 · 2264 阅读 · 0 评论 -
《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】答案
第 一 章. 习 题1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095(4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2 将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 100.转载 2020-06-04 23:20:58 · 7934 阅读 · 0 评论 -
汇编语言——《子程序应用(数制转换)程序设计》实验报告
实验目的掌握程序设计中的子程序结构; 熟练使用过程伪指令、子程序调用和返回等汇编语言的指令编写子程序; 掌握数制转换方法; 掌握利用DOS系统功能调用进行字符输入及字符输出(显示)的方法。实验内容1、编写十进制到十六进制转换程序。要求从键盘取得一个十进制数,然后把该数以十六进制形式在屏幕上显示出来2、已知从BUF开始存放了10个16进制字数据,编程求出这10个数中的最大数,(将最大数存入MAX字节单元),并将其以10进制数的形式在屏幕上显示出来。(提示:以上两题都要求采用子程序的方法原创 2020-05-25 14:04:03 · 3559 阅读 · 0 评论 -
汇编语言——《子程序应用(数制转换)程序设计》实验任务书
一、实验目的掌握程序设计中的子程序结构; 熟练使用过程伪指令、子程序调用和返回等汇编语言的指令编写子程序; 掌握数制转换方法; 掌握利用DOS系统功能调用进行字符输入及字符输出(显示)的方法。二、实验环境与设备计算机一台,并且安装Windows操作系统和macro assembler 5.0以上版本的系统软件。三、预备知识1、掌握汇编语言程序的上机步骤2、掌握DEBUG的使用方法,熟悉以下常用命令3、掌握汇编语言的指令:( 1 )数据传送类指令。( 2 )数据运算类指原创 2020-05-25 13:58:51 · 1103 阅读 · 0 评论 -
汇编语言——输入两位数比较大小
源代码code segment assume cs:code org 100hstart: jmp bbbmsg1 db 10,13,'please input x:','$'msg2 db 10,13,'please input y:','$'x db 0y db 0msg3 db...原创 2020-04-27 17:48:14 · 6193 阅读 · 1 评论 -
汇编语言——《分支与循环程序设计》实验报告
实验目的1、掌握程序设计中的3种基本结构(顺序结构、选择程序、循环程序)。2、熟练使用汇编语言的指令:数据传送类指令、数据运算类指令、逻辑判断类指令与转移指令、循环指令等。3、初步了解系统功能调用的使用方法,尝试使用01H号功能调用进行字符输入的方法及使用02H号功能调用进行字符输出(显示)的方法。实验内容计算1+2+3+…+10,将结果显示在屏幕上。 利用01H号功能...原创 2020-04-27 17:31:27 · 8597 阅读 · 0 评论 -
汇编语言——《分支与循环程序设计》实验任务书
一、实验目的1、掌握程序设计中的3种基本结构(顺序结构、选择程序、循环程序)。2、熟练使用汇编语言的指令:数据传送类指令、数据运算类指令、逻辑判断类指令与转移指令、循环指令等。3、初步了解系统功能调用的使用方法,尝试使用01H号功能调用进行字符输入的方法及使用02H号功能调用进行字符输出(显示)的方法。二、实验环境与设备计算机一台,并且安装Windows操作系统和macro a...原创 2020-04-27 13:29:06 · 1698 阅读 · 0 评论 -
汇编语言——正数数组P和负数数组N
问题描述试编写一完整的汇编语言程序,将一个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别求出这两个数组中数据的个数。解决方案DSEG SEGMENTCOUNT EQU 20ARRAY DW 20 DUP (?) ;存放数组COUNT1 DB 0 ;存放正数的个数ARRAY1 DW 20 DUP (?) ;存放正数COUNT2 DB 0 ;存放负数的个数...原创 2020-04-26 18:14:35 · 2985 阅读 · 1 评论 -
汇编语言——100个数中的最大数
问题描述已知,从baffuer开始存放了100个带符号的字数据,试编写一完整的汇编语言程序,求出这100个数中的最大数,并将结果存放到MAX单元。源代码DSEG SEGMENTn EQU 100H M DW n DUP (?)DATA DW ? ;M+2n单元ADDR DW ? ;M+2(n+1)单元DSEG ENDSCSEG SEGMENTMAIN PROC...原创 2020-04-26 18:11:04 · 2220 阅读 · 0 评论 -
汇编语言——《汇编语言程序的上机过程》实验报告
实验目的1、掌握汇编语言程序的上机步骤(1 )用编辑程序(如EDIT、记事本等)编辑汇编语言源程序(建立.ASM文件)(2 )用MASM程序产生OBJ文件(3 )用LINK程序产生EXE文件(4 )程序的运行(用DEBUG或在DOS下直接运行)2、掌握DEBUG的使用方法程序说明在数据段DATA中有两个字数据X和Y, 假设X=1122H, Y=3344H, 编程求两...原创 2020-04-05 22:31:44 · 4417 阅读 · 0 评论 -
MASM + DOSBox——debug时g命令卡死解决方案
问题描述问题分析1、程序错误。2、无偏移地址。解决方案重新编译、链接,生成可执行文件。使用debug命令,无提示错误为止。正确使用g命令。参考文章https://bbs.csdn.net/topics/394940872...原创 2020-04-05 22:27:26 · 6727 阅读 · 1 评论 -
MASM + DOSBox——debug.exe错误[Extended Error 2]解决方案
问题描述在编译、链接,生成可执行文件后,运行没有出错。而在debug时,出现“Extended Error 2”错误。如下所示。问题分析1、未成功编译和链接。2、当前目录下没有找到该文件。解决方案在debug命令后,要加完整的文件名,包括后缀。参考文章https://blog.csdn.net/wingrez/article/details/87...原创 2020-04-05 22:21:26 · 3708 阅读 · 0 评论 -
汇编语言——《汇编语言程序的上机过程》实验任务书
一、实验目的1. 掌握汇编语言程序的上机步骤(1 )用编辑程序(如EDIT、记事本等)编辑汇编语言源程序(建立.ASM文件)(2 )用MASM程序产生OBJ文件(3 )用LINK程序产生EXE文件(4 )程序的运行(用DEBUG或在DOS下直接运行)2. 掌握DEBUG的使用方法二、实验环境与设备计算机一台,并且安装Windows操作系统和macro assembl...原创 2020-04-02 21:52:26 · 2729 阅读 · 0 评论 -
汇编语言 + Visual Studio 2019——Visual Studio 2019 中汇编语言环境解决方案
基本概念MASM:Microsoft汇编程序(俗称MASM)是一种工业软件开发工具,已经由主要的操作系统供应商维护和更新了30多年。它从未被软化或折衷为对消费者友好的工具,并且被设计为供专业程序员用于操作系统级代码和高性能目标模块,可执行文件和动态链接库。MASM32 SDK:MASM32 SDK(简称MASM32)是一个独立的项目,旨在简化有经验的程序员进入汇编语言编程领域的工作。...原创 2020-03-20 14:26:54 · 16086 阅读 · 2 评论 -
汇编语言——移位指令
基本概念移位操作指令:移位操作指令是一组经常使用的指令,属于汇编语言逻辑指令中的一部分,它包括移位指令(含算术移位指令、逻辑移位指令),循环移位指令(含带进位的循环移位指令),双精度移位指令三大类。其功能为将目的操作数的所有位按操作符规定的方式移动1位或按寄存器CL规定的次数(0~255)移动,结果送入目的地址。目的操作数是8位(或16位)的寄存器数据或存储器数据。基本格式格式为...原创 2020-03-16 16:29:15 · 12383 阅读 · 1 评论 -
汇编语言——16位寄存器实现32位二进制数左移4位。
问题描述16位寄存器实现32位二进制数左移4位、源代码MOV CL, 04SHL DX, CLMOV BL, AHSHL AX, CLSHR BL, CLOR DL, BL说明:MOVCL,04SHL DX,CL;以上两行指令是把dx左移4位,这样dx的最低4位为0MOVBL,AH;...原创 2020-03-16 16:16:17 · 4010 阅读 · 0 评论 -
汇编语言——计算Z=(W * X)/ (Y+6),R=余数
问题描述已知X、Y、Z、R和W均为存放16位带符号数单元的地址,试编写一程序段求(W*X)/(Y+6)的值,商存入Z中,余数存入R中。源代码MOV BX,Y ADD BX,6 MOV AX,W MOV CX,X MUL CX DIV BX MOV Z,AX MOV R,DX参考文章https://www.zybang.com/question/0e88c7...原创 2020-03-16 16:11:26 · 4026 阅读 · 1 评论 -
汇编语言——标志位
基本概念标志寄存器:又称程序状态字(外语缩写:PSW、外语全称:Program Status Word)。一个16位的存放条件标志、控制标志寄存器,主要用于反映处理器的状态和ALU运算结果的某些特征及控制指令的执行。标志位状态标志位CF(Carry Flag)(进位标志)当设置CF=1时,算术操作最高位产生了进位或借位;当设置CF=0时,算术操作最高位无进位或借位...原创 2020-03-16 15:52:30 · 2292 阅读 · 0 评论 -
汇编语言——十六进制数据前加0规则
问题解析0~9开头的不用加,A~F开头的要加主要是汇编语言编译器的设计者需要用户按这个规则编程,否则它设计的编译器不知道你写的是什么。因为标号不能以0~9的数字开头,但可以以字母开头,导致无法识别数值与标记。十六进制以A~F打头的数字出现在指令中时,前面一定要加一个数字0,以免与其它符号相混淆。参考文章https://bbs.csdn.net/topics/3...原创 2020-03-02 19:32:37 · 10579 阅读 · 1 评论 -
汇编语言——可由指令直接指定的I/O端口数
问题描述可由指令直接指定的I/O端口数问题分析I/O端口号通常是由DX寄存器提供,但有时也可以在指令中直接指定00H-0FFH的端口号。计算时就是00~FFH的长度,共256个。参考文章https://zhidao.baidu.com/question/120335490.html...原创 2020-03-02 19:27:59 · 1044 阅读 · 0 评论 -
汇编语言——偏移地址超过有效地址FFFFH
问题描述偏移地址超过有效地址FFFFH问题解析在实地址模式下,寻址采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB(64K即65536,十六进制表示为10000H),也就是说当偏移量大于FFFFH时,要将段地址加1,偏移量减去10000H,如果所得的偏移量仍然大于FFFFH时,再将段地址加1,偏移量减去10000H,直至偏移量小于等于FFFFH为止(即取其64...原创 2020-03-02 19:08:30 · 2170 阅读 · 0 评论 -
汇编语言——十种寻址方式
寻址方式1.立即寻址方式直接给寄存器赋值MOV AH, 80H2. 寄存器寻址方式源或者目的有一个是寄存器2.1) 源操作数是寄存器寻址方式如:ADD VARD, EAX ADD VARW, AX MOV VARB, BH等。其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。2.2) 目的操作数是寄存器寻址方式如:ADD ...原创 2020-03-02 18:59:54 · 5044 阅读 · 0 评论 -
CG CTF RE ReadAsm2
https://cgctf.nuptsast.com/files/2.asm题解:int main(int argc, char const *argv[]){ char input[] = {0x0, 0x67, 0x6e, 0x62, 0x63, 0x7e, 0x74, 0x62, 0x69, 0x6d, 0x55, 0x6a, 0x7f,...原创 2019-07-05 10:43:50 · 544 阅读 · 0 评论