CMP D100, K100:将寄存器 D100 的值与常数 100 进行比较。

K100

概述

程序控制指令,又称转移指令,用于改变程序的执行流程。常见的程序控制指令有:- 跳转指令:无条件地将程序执行流程转移到指定的地址。- 分支指令:根据指定的条件将程序执行流程转移到不同的地址。- 返回指令:从子程序或函数返回到调用程序。

不属于程序控制指令的指令

根据给定的内容,下列指令不属于程序控制指令:```text下列哪种指令不属于程序控制指令```这表明给定的内容中没有明确列出不属于程序控制指令的指令。因此,无法根据给定的内容确定哪种指令不属于程序控制指令。

程序控制指令的类型

跳转指令

跳转指令无条件地将程序执行流程转移到指定的地址。常见的跳转指令包括:- JMP:无条件跳转- CALL:调用子程序或函数- RET:从子程序或函数返回

分支指令

分支指令根据指定的条件将程序执行流程转移到不同的地址。常见的条件分支指令包括:- JZ:跳转到指定地址,如果寄存器等于 0- JNZ:跳转到指定地址,如果寄存器不等于 0- JG:跳转到指定地址,如果寄存器大于 0- JL:跳转到指定地址,如果寄存器小于 0

返回指令

返回指令从子程序或函数返回到调用程序。常见的返回指令包括:- RET:从子程序或函数返回- IRET:从中断处理程序返回

程序控制指令的应用

程序控制指令广泛应用于各种程序中,包括:- 控制程序流程,例如循环和分支- 实现条件判断,例如 if-else 语句- 调用子程序或函数,实现模块化编程- 处理中断和异常

结论

程序控制指令是计算机编程中必不可少的一部分,用于控制程序执行流程。通过使用这些指令,程序员可以实现复杂的算法和程序结构。了解程序控制指令的类型和应用对于编写高效、可靠的程序非常重要。

中断号 解释 中断号 解释0 除数为0错 19 引导装入程序1 音步中断 1A 日时调用2 不可屏蔽中断NMI 1B 键盘阻断时得到控制权3 断电中断(CCH) 1C 时钟中断时得到控制权4 溢出中断 1D 指向CRT初始参数表5 屏幕打印中断 1E 指向盒带参数表6-7 保留 1F 1KB图形模式8 计时器中断(18.2秒) 20 结束DOS程序9 键盘中断 21 DOS功能调用A-D 保留 22 结束地址(建义用EXEC)E 软盘机中断 23 DOS Crtl-Break退出地址F 保留 24 DOS致命错向量10 屏幕I/O调用 25 DOS绝对磁盘读11 设备检查调用 26 DOS绝对磁盘写12 存储器检查调用 27 结束程序并驻留(建义用31h)13 软盘机I/O调用 28-3F DOS保留14 RS-233I/O调用 40-7F 未用15 盒带机I/O调用 80-85 BASIC保留16 键盘I/O调用 86-F0 BASIC解释程序用17 打印机I/O调用 F1-FF 未用18 ROM-BASIC入口指令名详解call 指令(过程调用)(控制指令-长转移)详解:段内直接调用段内间接调用(寄存器)段内间接调用(存储器)段间直接调用段间间接调用指令名jmp 指令(无条件转移指令)(控制指令-长转移)详解:段内直接跳转短段内直接跳转段内间接跳转(寄存器)段内间接跳转(存储器)段间直接跳转段间间接跳转指令名ret 指令(过程返回)(控制指令-长转移)详解:段内返回段内返回立即数加于sp段间返回段间返回立即数加于spna/jnbe 指令(控制指令-短转移) 不小于或不等于时转移jae/jnb 指令 (控制指令-短转移) 大于或等于时转移jb/jnae 指令 (控制指令-短转移) 小于转移jbe/jna 指令 (控制指令-短转移) 小于或等 于转移jg/jnle 指令(控制指令-短转移) 大于转移jge/jnl 指令 (控制指令-短转移) 大于或等于转移jl/jnge 指令 (控制指令-短转移) 小于转移jle/jng 指令 (控制指令-短转移) 小于或等 于转移je/jz 指令 (控制指令-短转移) 等于转移jne/jnz 指令 (控制指令-短转移) 不等于转移jc 指令 (控制指令-短转移) 有进位时转移jnc 指令 (控制指令-短转移) 列进位时转移jno 指令 (控制指令-短转移) 不溢出时转移jnp/jpo 指令 (控制指令-短转移) 奇偶性为奇数时转移jns 指令 (控制指令-短转移) 符号位为0转移jo 指令 (控制指令-短转移) 溢出转移jp/jpe 指令 (控制指令-短转移) 奇偶性为偶数时转移js 指令 (控制指令-短转移) 符号位为1时转移loop 指令 (循环控制指令-短转移) cx 不为0时循环loope/loopz 指令 (循环控制指令-短转移) cx 不为0且标志 z=1 时循环loopne/loopnz 指令 (循环控制指令-短转移) cx 不为0且标志 z=0 时循环jcxz 指令 (循环控制指令-短转移) cx 为0时转移★int 指令 (中断指令) 中断指令(后详解)into 指令 (中断指令) 溢出中断iret 指令 (中断指令) 中断返回指令名shl 指令(逻辑左移)sal 指令(算术左移)shr 指令(逻辑右移)sar 指令(算术右移) 寄存器,1rol 指令(循环左移) 寄存器,clror 指令(循环右移) 存储器,1rcl 指令(通过进位的循环左移)存储器,clrcr 指令(通过进位的循环右移)(逻辑运算)not 指令(取反运算)寄存器求反(逻辑运算)存储器求反and 指令(与运算) (逻辑运算)寄存器 and 寄存器 寄存器寄存器 and 存储器 寄存器存储器 and 寄存器 存储器立即数 and 存储器 存储器立即数 and 累加器 累加器or 指令(或运算)(逻辑运算)寄存器 or 寄存器 寄存器寄存器 or 存储器 寄存器存储器 or 寄存器 存储器立即数 or 存储器 存储器立即数 or 累加器 累加器test 指令(测试) (逻辑运算)寄存器 test 寄存器寄存器 test 存储器寄存器 test 立即数存储器 test 立即数累加器 test 立即数movs 指令(串传送)(字符串操作指令)单个传送重复传送cmps 指令(串比较) (字符串操作指令)单个比较重复比较scas 指令(串扫描)(字符串操作指令)单个搜索重复搜索lods 指令(装入串)(字符串操作指令)单个装载重复装载stos 指令(保存串) (字符串操作指令)单个存储重复存储mov 指令(传送字或字节)(数据传送命令)寄存器与寄存器间传送存储器与寄存器间传送立即数传送给存储器立即数传送给寄存器存储器传送给累加器累加器传送存储器寄存器传送给段寄存器存储器传送给段寄存器段寄存器传送给寄存器段寄存器传送给存储存器pop 指令(把字弹出堆栈) (数据传送命令)push 指令(把字压入堆栈)存储器寄存器段寄器xchg 指令(交换字或字节) (数据传送命令)寄存器与寄存器交换存储器与寄存器交换寄存器与累加器交换in 指令(端口输入) (数据传送命令)直接输入间接输入out 指令(端口输出) (数据传送指令)直接输出间接输出add 指令(加法)(算术指令)adc 指令(带进位加法)寄存器+寄存器 寄存器寄存器+存储器 寄存器存储器+寄存器 存储器立即数+存储器 存储器立即数+累加器 累加器inc 指令(加1)(算术指令)存储器增量寄存器增量sub 指令(减法) (算术指令)sbb 指令(带借位减法)寄存器-寄存器 寄存器寄存器-存储器 寄存器存储器-寄存器 存储器立即数-存储器 存储器立即数-累加器 累加器dec 指令(减1)(算术指令)存储器减量寄存器减量nec 指令(求反,以0减之)寄存器求补存储器求补cmp 指令(比较)(算术指令)寄存器与寄存器比较寄存器与存储器比较寄存器与立即数比较存储器与立即数比较累加器与立即数比较mul 指令(无符号乘法) (算术指令)imul 指令(整数乘法)与8位寄存器相乘与16位寄存器相乘与8位存储单元相乘与16位存储单元相乘div 指令(无符号除法)(算术指令)idiv 指令(整数除法)被8位寄存器除被16位寄存器除被8位存储单元除被16位存储单元除Debug实战1.查看主板的生产日期,版本D ffff:05D fe00:0e2.模拟Rest键功能A:100 jmp ffff:0000:105g3.快速格式化软盘L 100 0 0 * 插入一张己格式化软盘W 100 0 0 * 放入一张欲格式化软盘注:* 分别为:720K e |1.2M id |1.44M 214.硬盘格式化两种方法(1)G=c800:05(2) A 100mov ax,0703mov cx,0001mov dx,0080int 13int 3g 1005.加速键盘Amov ax,0305mov bx,0000int 16int 20rcx10n fast. comwq6.关闭显示器(恢复时,按任意键)Amov ax,1201mov bl,36int 10mov ah,0int 16mov ax,1200int 10rcx10n crt-of. comwq7.硬盘DOS引导记录的修复在软驱中放入一张己格式化软盘debug-l 100 2 0 1-w 100 0 50 1把软盘放入故障机软驱中debug-l 100 0 50 1-w 100 2 0 1-q8.清coms中setup口令debug-amov bx,0038mov cx,0000mov ax,bxout 70,alinc cxcmp cx,0006jnz 0106int 20-rcx:20-nclearpassword -w-q注:以上适合super与dtk机,对于ast机,因为他的口令放在coms的4ch-51h地址处,只要将:mov bx,0038 改为: movbx,004c即可9.取消coms的密码(将coms数据清为初始化)-o 70,10-o 71,10-g-q10.将硬盘主引导记录保存到文件中debug-amov ax,0201mov bx,0200mov cx,0001mov dx,0080mov int 13int -w-q11.调用中断实现重启计算机(可以成文件)debug-aint 19int 20-rcx:2-nrese t. com-w-qDEBUG主要命令DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 一、DEBUG程序的调用在DOS的提示符下,可键入命令:C:\DEBUG [D:][PATH][FILENAME[>[PARM1][PARM2]其中,文件名是被调试文件的名字。 如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。 如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。 命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。 在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。 二、DEBUG的主要命令1、显示存储单元的命令D(DUMP),格式为:_D[address]或_D[range]例如,按指定范围显示存储单元内容的方法为:-d100 E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.718E4:0120 8B其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。 这里没有指定段地址,D命令自动显示DS段的内容。 如果只指定首地址,则显示从首地址开始的80个字节的内容。 如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。 2、修改存储单元内容的命令有两种。 ·输入命令E(ENTER),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。 命令格式为:-E address例如,-E DS:100 F3XYZ8D其中F3,X,Y,Z和各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容第二种格式则是采用逐个单元相继修改的方法。 命令格式为:-E address例如,-E DS:100则可能显示为:18E4:0100 89.-如果需要把该单元的内容修改为78,则用户可以直接键入78,再按空格键可接着显示下一个单元的内容,如下:18E4:0100 89.78 1B.-这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。 ·填写命令F(FILL),其格式为:-F range list例如:-F 4BA:0100 5 F3XYZ8D使04BA:0100~0104单元包含指定的五个字节的内容。 如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。 3)检查和修改寄存器内容的命令R(register),它有三种格式如下:·显示CPU内所有寄存器内容和标志位状态,其格式为:-R例如,-rAX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC18E4:0100 C MOV WORD PTR [0204],0138 DS:0204=0000·显示和修改某个寄存器内容,其格式为:-R register name例如,键入-R AX系统将响应如下:AX F1F4:即AX寄存器的当前内容为F1F4,如不修改则按ENTER键,否则,可键入欲修改的内容,如:-R bxBX 0369:059F则把BX寄存器的内容修改为059F。 ·显示和修改标志位状态,命令格式为:-RF系统将响应,如:OV DN EI NG ZR AC PE CY-此时,如不修改其内容可按ENTER键,否则,可键入欲修改的内容,如:OV DN EI NG ZR AC PE CY-PONZDINV即可,可见键入的顺序可以是任意的。 4)运行命令G,其格式为:-G[=address1][address2[address3…>其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。 后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。 5)跟踪命令T(Trace),有两种格式:·逐条指令跟踪-T [=address]从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。 如未指定地址则从当前的CS:IP开始执行。 ·多条指令跟踪-T [=address][value]从指定地址起执行n条指令后停下来,n由value指定。 6)汇编命令A(Assemble),其格式为:-A[address]该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。 必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。 7)反汇编命令U(Unassemble)有两种格式。 ·从指定地址开始,反汇编32个字节,其格式为:-U[address]例如:-uE4:0100 C MOV WORD PTR[0204],E4:0106 C MOV WORD PTR[0206],E4:010C C MOV WORD PTR[0208],E4:0112 BBO4O2 MOV BX,E4:0115 E CALL 011A18E4:0118 CD20 INT 2018E4:011A 50 PUSH AX18E4:011B 51 PUSH CX18E4:011C 56 PUSH SI18E4:011D 57 PUSH DI18E4:011E 8B37 MOV SI,[BX]如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。 ·对指定范围内的存储单元进行反汇编,格式为:-U[range]例如:-u100 10c18E4:0100 C MOV WORD PTR[0204],E4:0106 C MOV WORD PTR[0206],E4:010C C MOV WORD PTR[0208],0202或-u100 E4:0100 C MOV WORD PTR[0204],E4:0106 C MOV WORD PTR[0206],E4:010C C MOV WORD PTR[0208],0202可见这两种格式是等效的。 8)命名命令N(Name),其格式为:-N filespecs [filespecs]命令把两个文件标识符格式化在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或W命令把文件装入存盘。 filespecs的格式可以是:[d:][path] filename[]例如,-N myprog-L-可把文件myprog装入存储器。 9)装入命令(Load),有两种功能。 ·把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。 其格式为:-L[address[drive sector sector]·装入指定文件,其格式为:-L[address]此命令装入已在CS:5CH中格式化了文件控制块所指定的文件。 如未指定地址,则装入CS:0100开始的存储区中。 10)写命令W(Write),有两种功能。 ·把数据写入磁盘的指定扇区。 其格式为:-W address drive sector sector·把数据写入指定的文件中。 其格式为:-W[address]此命令把指定的存储区中的数据写入由CS:5CH处的文件控制块所指定的文件中。 如未指定地址则数据从CS:0100开始。 要写入文件的字节数应先放入BX和CX中。 11)退出DEBUG命令Q(Quit),其格式为:-Q它退出DEBUG,返回DOS。 本命令并无存盘功能,如需存盘应先使用W命令。 问题:初学者问一个低级问题,执行debug-a后,如果有一行输入错误,如何更改这一行?回答:加入进行如下输入:D:\PWIN95\Desktop>debug-a2129:0100movax,:0103movbx,:0106movcx,:0109此时,发现movbx,200一句错误,应为movbx,20,可以敲回车返回-状态,然后输入:-a:0103movbx,20如果多或者少若干行,不必重新输入,可以用M命令移动后面的程序来去掉或者增加程序空间.A.程序调用命令C>DEBUG [D:] [PATH] [FILENAME[]] [PARM1] [PARM2]其中,文件名是被调试文件的名字。 如未键入文件名。 可用DEBUG命令N和L把需要文件装入存储器后再调试。 D指定驱动器,PATH为路径,FILENAME为文件名,PARM为命令参数B.显示存储单元命令-D [ADDRESS]或 ;ADDRESS 地址-D [RANGE] ;RANGE 范围C.修改存储单元内容命令-E ADDRESS [LIST]D.检查和修改寄存器内容命令-R [REGISTER NAME] ;Register name 寄存器名字E.汇编命令-A [ADDRESS]F.跟踪命令-T [=ADDRESS] [VALUE] ;Value 变量值G.运行命令-G [=ADDRESS ] [ADDRESS2 [ADDRESS3]H.反汇编命令-U [ADDRESS]-U [RANGE]I.命名命令-N FILESPECS [FILESPECS]FILESPECS的格式可为[D:][PATH]FILENAME []J.装入命令-L [ADDRESS[DRIVE SECTOR SECTOR]] ;DRIVE SECTOR 磁盘 扇区K.写命令W ADDRESS DRIVE SECTORL.退出命令-Q

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论