<> On branch structure

Branching of programs is very common , This article will discuss the branch structure in the compilation through a question .

<> subject

* Program execution is , Display prompt information “Please input a string (length<9):”, Enter a length less than 9 String of ;
* The prompt message is then displayed “Please input the index of the char to
display”, Ask the user to specify the location number of a string in the string , Program control user input location number must be legal ; If it is illegal, the program exits
* The program displays the string at the location specified by the user
Output example 1
Please input a string (length < 9):ABCDEFG Please input the index of the char
to display :2 The char is:C
Output example 2
Please input a string (length < 9):ABC Please input the index of the char to
display :4 The index is invalid!
<> code

First, the whole code
data SEGMENT strmess db 'Please input a string(length < 9):$' strtoolong db
0ah,0dh,'The string is too long!$' nummess db 0ah,0dh,'Please input the
number(index < 4) of the char to display:$' charmess db 0ah,0dh,'the char is
:$' chartoolong db 0ah,0dh,'The index is invaild!$' buf db 10,?10 dup(0) num
db ? data ENDS ;description code SEGMENT USE16 assume cs:code,ds:data start:mov
ax,data mov ds,ax lea dx,strmess mov ah,09h int 21h lea dx,buf mov ah,0ah int
21h cmp buf+1,8 jg strlong jle strnext strlong: lea dx,strtoolong mov ah,09h
int 21h mov ax,4c00h int 21h strnext: lea dx,nummess mov ah,09h int 21h mov
ah,01h int 21h sub al,30h mov num,al cmp buf+1,al jle charlong jg charnext
charlong: lea dx,chartoolong mov ah,09h int 21h mov ax,4c00h int 21h charnext:
lea dx,charmess mov ah,09h int 21h mov bl,num mov bh,0 mov dl,buf[bx+2] mov
ah,02h int 21h mov ax,4c00h int 21h code ENDS END start
* Operation results

<> analysis

This topic needs to be used first 10 Call to get user input , By judging whether the string exceeds 8 To make a jump branch , If more than 8, Then output the error message and end the program , If it is correct, it should be continued .

* adopt cmp To return a value , Reuse jump To jump
* sub al,30h reason why al Need to reduce 30h, Because 1 The No. call accepts the character input by the user ASCII code , and 0~9 Plastic surgery and ASCII The code is exactly different 30.
<> Branching structure
Created with Raphaël 2.2.0 start My operation Jump command end yes no
Several examples of jump instructions

Instruction synonymous jump condition
jejz equal
jgjnle greater than
jljnge less than
<> summary

This program can also be added loop loop , When the user input is illegal , Continue until the input is correct . Compilation of a rookie , If there is a mistake or a better way, please point it out in the comments section , Welcome to discuss .

Technology
©2019-2020 Toolsou All rights reserved,
C Review of basic language knowledge Go Language learning notes (GUI programming )Java Misunderstanding —— Method overloading is a manifestation of polymorphism ? How to achieve low cost and high stability for cloud native applications ?elementui Shuttle box el-transfer Display list content text too long C/C++ Memory model Element-Ui assembly Message Message prompt , alert Popup C# Making a simplified version of calculator Python In pycharm editor Interface style modification Tiktok refresh progress bar ( Two little balls turn ), The code is simple